這將顯示其中用於SOURCE
默認約束沒有被設置爲((0))
所有模式/表:
SELECT s.name AS schema_
, t.name AS table_
, OBJECT_DEFINITION(default_object_id) AS default_value
FROM sys.columns c
JOIN sys.tables t
ON c.object_id = t.object_id
JOIN sys.schemas s
ON t.schema_id = s.schema_id
JOIN sys.default_constraints d
ON c.default_object_id = d.object_id
WHERE t.name LIKE 'tblFAC%'
AND c.name = 'SOURCE'
AND OBJECT_DEFINITION(default_object_id) <> '((0))'
你可以使用上面建立一個ALTER語句,我想你可以將其設置爲在每臺服務器上運行,不確定是否可以查詢跨服務器sys表。
更新,獎金問題: 沒有時間來測試這一點,但發現那裏沒有限制設置,你就應該能夠將其更改爲一個LEFT JOIN
和檢查NULL
:
SELECT s.name AS schema_
, t.name AS table_
, OBJECT_DEFINITION(default_object_id) AS default_value
FROM sys.columns c
JOIN sys.tables t
ON c.object_id = t.object_id
JOIN sys.schemas s
ON t.schema_id = s.schema_id
LEFT JOIN sys.default_constraints d
ON c.default_object_id = d.object_id
WHERE t.name LIKE 'tblFAC%'
AND c.name = 'SOURCE'
AND OBJECT_DEFINITION(default_object_id) IS NULL
謝謝朋友。這有很大幫助。我發現錯誤的條目(例如單括號)。唯一的問題是忽略空白條目。你能提供關於尋找這些的任何建議嗎? –
@PeEed「空白條目」是什麼意思?你的意思是'NULL'的值,還是你的意思是空字符串''''或其他什麼? – gvee
我想你是指沒有約束的地方?查看更新。 –