Каковы ограничения 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 ответа:
Да, это может быть выполнено с помощью
SqlCommand
- самый простой способ-поместить это в хранимую процедуру и выполнить это.Какие у вас проблемы?
Что касается изучения SSMS - если вы разрабатываете на SQL Server, это неплохая идея.
Просто оберните это в хранимую процедуру и вызовите ее с помощью команды SqlCommand .Метод ExecuteNonQuery (). Вы можете "слушать" сообщения печати из вашего кода .Net, обрабатывая событие InfoMessageSqlConnection . Это также помогает установить свойство FireInfoMessageEventOnUserErrors соединения в true.
Вы должны понять ADO.NET и как работают объекты, в первую очередь
- соединение
- команда
- транзакция
- DataReader
- Dataset
- DataDapter
Объект Command может принимать любой SQL (ANSI SQL) совместимый запрос. Если вы собираетесь иметь транзакции, то я предлагаю вам обрабатывать транзакции
- через ADO.NET сделка...вот некоторые чтения
- вместо этого вызовите хранимую процедуру из команды объект, а не передавать его как часть SQL.