...然後你遍歷你的結果用光標和動態運行DDL,如:
ALTER TABLE myTable ALTER COLUMN myColumn datetime [NOT] NULL
,讓你得到類似這樣的(未測試)的東西:
編輯:加空能力檢查,以及:
DECLARE @SQL AS NVARCHAR(1024)
DECLARE @TBL AS NVARCHAR(255)
DECLARE @COL AS NVARCHAR(255)
DECLARE @NUL AS BIT
DECLARE CUR CURSOR FAST_FORWARD FOR
SELECT t.name, c.name, c.is_nullable
FROM sys.tables AS t
JOIN sys.columns c ON t.object_id = c.object_id
JOIN information_schema.columns i ON i.TABLE_NAME = t.name AND i.COLUMN_NAME = c.name
WHERE i.data_type = 'datetime2'
ORDER BY t.name, c.name
OPEN CUR
FETCH NEXT FROM CUR INTO @TBL, @COL, @NUL
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @SQL = 'ALTER TABLE ' + @TBL + ' ALTER COLUMN ' + @COL + ' datetime' + (CASE WHEN @NUL=1 THEN '' ELSE ' NOT' END) + ' NULL;'
EXEC sp_executesql @SQL
FETCH NEXT FROM CUR INTO @TBL, @COL, @NUL
END
CLOSE CUR;
DEALLOCATE CUR;
來源
2009-09-18 20:53:47
van
你爲什麼要加入三個表時,可以從INFORMATION_SCHEMA中獲得所有的信息。列? – Kibbee 2009-09-18 20:56:21
@van,@David。您可能想要在sys中檢查列is_nullable。列來驗證ALTER COLUMN中是否需要NOT NULL – 2009-09-18 20:58:07