.net - System.Data.SqlClient.SqlCommand 对象可以执行的 T-SQL 有哪些限制?

标签 .net sql-server tsql migration sqlcommand

我有一些如下所示的 Transact-SQL,它可以通过 SqlCommand 对象执行吗?还是我需要开始学习 Sql 管理对象?

BEGIN TRANSACTION
BEGIN TRY

    IF NOT EXISTS
    (
        SELECT * 
        FROM INFORMATION_SCHEMA.TABLES 
        WHERE TABLE_CATALOG = (SELECT DB_NAME())
        AND TABLE_NAME = 'SchemaVersion'
    )
        BEGIN
            Print 'Migrating up...'

            CREATE TABLE SchemaVersion (
                Id INT IDENTITY(1,1) NOT NULL,
                Version INT NOT NULL,
                CONSTRAINT PK_SchemaVersion PRIMARY KEY CLUSTERED (
                    Id ASC
                )
            )

            INSERT INTO SchemaVersion (Version) VALUES(1)

            PRINT 'Migrated from 0 to 1'
        END
    ELSE IF (SELECT Version FROM SchemaVersion) = 1
        BEGIN
            Print 'Migrating down...'

            DROP TABLE Dia_SchemaVersion

            PRINT 'Migrated from 1 to 0'
        END
     ELSE
        PRINT 'Not migrating...'

    COMMIT TRANSACTION;

END TRY
BEGIN CATCH
    ROLLBACK TRANSACTION
END CATCH

最佳答案

是的,这可以通过 SqlCommand 执行 - 最简单的方法是将其放入存储过程中并执行它。

您遇到了什么问题?

至于学习 SSMS - 如果您在 SQL Server 上进行开发,那不是一个坏主意。

关于.net - System.Data.SqlClient.SqlCommand 对象可以执行的 T-SQL 有哪些限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5654119/

相关文章:

.net - 在 office 07 中打开生成的 excel 文件时出现警告消息

c# - 发出委托(delegate)函数调用

sql - 性能: multiple conditional WHERE clauses,还是动态查询?

sql - 插入存储过程后返回,成功则返回1,否则返回0

SQL 连接主键上的行值

sql-server - 创建 SQL Server View 时可以指定列类型吗?

jquery 方法 : validate a div rather than a form

c# - 如何删除字符串上的重音符号?

sql - 动态链接服务器查询

sql - 从 100,101,102 等行创建范围(100-106、107、111-119)