- 「データベーステスト駆動開発」に関するAndyのブログを読みました。
http://sqlblog.com/blogs/andy_leonard/archive/2012/08/07/revisiting-test-driven-database-development.aspx
2.すべてのスクリプトをべき等な方法で記述します。コンピューティングでは、べき等演算は、同じ入力パラメーターで複数回呼び出された場合に追加の効果がない演算です。
3. A.サードパーティベンダーにスクリプトの実行時にSSMS画面の「テキスト出力」を送信してもらうか、B。sqlcmd.exeを使用してログ機能を使用し、.logを送信するように依頼します。ファイル。
-o output_file
http://msdn.microsoft.com/en-us/library/ms162773.aspx
これが「べき等」である.sqlファイルです。dbo.Employee.LastName列が元々64文字だった場合、このスクリプトはそれを変更します。「NOTEXISTS」に変更して(そしてCHARACTER_MAXIMUM_LENGTHチェックを削除して)、以前は存在しなかった列を作成します(これは、私のスクリプトの99%がすでに「稼働中」のデータベースでどのように見えるかです)。変数のsqlcmd「プレースホルダー」にも注意してください。ただし、以下のスクリプトを1回または333回実行すると、結果は同じになります。
Use [$(DBNAME)]
GO
:Error $(ErrorOutputFileFromCommandLine)
IF EXISTS ( SELECT TABLE_SCHEMA , TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Employee' and TABLE_SCHEMA = 'dbo' )
BEGIN
IF EXISTS
(
SELECT *
FROM [INFORMATION_SCHEMA].[COLUMNS]
WHERE
TABLE_NAME = 'Employee'
AND TABLE_SCHEMA = 'dbo'
AND COLUMN_NAME = 'LastName'
AND CHARACTER_MAXIMUM_LENGTH < 128
)
BEGIN
print 'Altering the column dbo.Employee.*LastName*'
ALTER TABLE [dbo].[Employee]
ALTER COLUMN [LastName] varchar(128) NOT NULL;
END
ELSE
BEGIN
print 'The column dbo.Employee.*LastName* already exists and supports 128 characters.'
END
END
GO