我正在修改mssqltips.com中的腳本,該腳本生成腳本以重新創建數據庫中的所有索引。我將它放在TRY中,CATCH將調用一個存儲過程並傳遞它5個參數。其中之一,c.name旨在成爲父表的主鍵,但引發「多部分標識符」c.name「無法綁定」。錯誤。對於代碼的長期使用感到抱歉,但認爲它看起來很重要。 SQL:多部分標識符「c.name」無法綁定
我發佈了一個圖像,因爲SQL非常大,並認爲語法高亮會有幫助。這是我現在在哪裏。
SELECT @create += N'BEGIN TRY ALTER TABLE ' + QUOTENAME(cs.name) + '.' + QUOTENAME(ct.name) + ' ADD CONSTRAINT ' + QUOTENAME(fk.name) + ' FOREIGN KEY (' + STUFF((SELECT ',' + QUOTENAME(c.name)
FROM sys.columns AS c
INNER JOIN sys.foreign_key_columns AS fkc ON fkc.parent_column_id = c.column_id AND fkc.parent_object_id = c.[object_id]
WHERE fkc.constraint_object_id = fk.[object_id]
ORDER BY fkc.constraint_column_id
FOR XML PATH(N''), TYPE).value(N'.[1]', N'nvarchar(max)'), 1, 1, N'') + ') REFERENCES ' + QUOTENAME(rs.name) + '.' + QUOTENAME(rt.name) + '(' + STUFF((SELECT ',' + QUOTENAME(sc.name)
FROM sys.columns AS sc
INNER JOIN sys.foreign_key_columns AS fkc ON fkc.referenced_column_id = sc.column_id AND fkc.referenced_object_id = sc.[object_id]
WHERE fkc.constraint_object_id = fk.[object_id]
ORDER BY fkc.constraint_column_id
FOR XML PATH(N''), TYPE).value(N'.[1]', N'nvarchar(max)'), 1, 1, N'') + '); END TRY BEGIN CATCH EXEC pr_purged_orphaned '
+ QUOTENAME(ct.name) + ' , ' + QUOTENAME(fk.name) + ' , ' + QUOTENAME(c.name) + ' , ' + QUOTENAME(rt.name) + ' , ''_cID_project_''' FROM sys.foreign_keys AS fk
INNER JOIN sys.tables AS rt ON fk.referenced_object_id = rt.[object_id]
INNER JOIN sys.schemas AS rs ON rt.[schema_id] = rs.[schema_id]
INNER JOIN sys.tables AS ct ON fk.parent_object_id = ct.[object_id]
INNER JOIN sys.schemas AS cs ON ct.[schema_id] = cs.[schema_id] WHERE rt.is_ms_shipped = 0 AND ct.is_ms_shipped = 0;
你應該發佈你的實際查詢,而不僅僅是它的圖像。但是,最後一次引用'quotename(c.name)'的'from'語句中不包含'sys_columns' ... – sgeddes
發佈SQL語句的*圖像*(屏幕截圖)幾乎是無用的。 – spencer7593