Каковы ограничения T-SQL, которые могут быть выполнены системой?Данные.В sqlclient.Объект SqlCommand?


У меня есть некоторые Transact-SQL, которые lloks, как это, может быть выполнено через объект 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
3 5

3 ответа:

Да, это может быть выполнено с помощью SqlCommand - самый простой способ-поместить это в хранимую процедуру и выполнить это.

Какие у вас проблемы?

Что касается изучения SSMS - если вы разрабатываете на SQL Server, это неплохая идея.

Просто оберните это в хранимую процедуру и вызовите ее с помощью команды SqlCommand .Метод ExecuteNonQuery (). Вы можете "слушать" сообщения печати из вашего кода .Net, обрабатывая событие InfoMessageSqlConnection . Это также помогает установить свойство FireInfoMessageEventOnUserErrors соединения в true.

Вы должны понять ADO.NET и как работают объекты, в первую очередь

  1. соединение
  2. команда
  3. транзакция
  4. DataReader
  5. Dataset
  6. DataDapter

Объект Command может принимать любой SQL (ANSI SQL) совместимый запрос. Если вы собираетесь иметь транзакции, то я предлагаю вам обрабатывать транзакции

  1. через ADO.NET сделка...вот некоторые чтения
  2. вместо этого вызовите хранимую процедуру из команды объект, а не передавать его как часть SQL.