したがって、SQL スクリプトを実行する .bat ファイルがあります。
@ECHO --- 03_Case6395_Publication.sql --- >> dbupt.log
sqlcmd -U %1 -P %2 -S %3 -d %4 -i 03_Case6395_Publication.sql -k -b >> dbupt.log
IF ERRORLEVEL 1 GOTO ErrorTag
スクリプトは実行され、エラーは発生しませんが、スクリプトは実際にはデータベースに影響を与えません。上記の例では、実行されているものは次のとおりです。
IF NOT EXISTS (SELECT 1 FROM [dbo].[syscolumns] WHERE [NAME] = N'MandatoryInList' AND [ID] = object_id(N'Pub_Type'))
BEGIN
ALTER TABLE [dbo].[Pub_Type] ADD [MandatoryInList] bit NULL CONSTRAINT [DF_PubType_MandatoryInList] DEFAULT (0)
END
ELSE
BEGIN
ALTER TABLE [dbo].[Pub_Type] ALTER COLUMN [MandatoryInList] bit NULL
END
GO
スクリプトは非常に単純で、MandatoryInList という列が追加されると思われますが、そうではありません。奇妙なことに、スクリプトに構文エラーはなく、SQL Server Management Studio から実行すると正常に動作します。バッチ ファイルには正常に実行される他のスクリプトがあるため、アクセス許可やスクリプトを実行しているユーザーに問題はありません。
また、これは新しいプロセスを作成して実行することで GUI から実行されますが、コマンド ウィンドウは表示されません。しかし、とにかく、このようなツールを何ヶ月も問題なく実行してきました.
何か案は?