2010-10-29 45 views
2

我已經成功地將運行SQL Server 2005數據庫的網站遷移到運行SQL Server 2008 R2的新服務器,並且除了1件事以外,一切似乎都正常。多部分sql標識符問題

2創建表時使用的不同架構(我不知道爲什麼)。所以你必須使用像schemaname.tablename這樣的多部分標識符來調用這些表,除了在網站sql代碼中,他們使用只有tablename或schemaname.tablename的函數來調用所有的函數,而這些函數以前可用但不是現在。

該網站本身是一個巨大的混亂,將極其難以找到並修改所有的SQL查詢。

有誰知道我可以如何改變它,所以它只允許再次查詢tablename?

回答

1

完成你想要的一種方法是讓不同的程序使用不同的身份登錄。然後,您可以使用ALTER USER或SSMS UI來設置每個用戶的默認模式。默認模式指定當用戶不使用前綴時使用哪個模式。

如果要合併模式,另一件事是爲要擺脫的模式中的每個對象定義synonyms,這樣您最終可以將內容合併爲一個乾淨的模式。

0

您可以使用ALTER SCHEMA在同一個數據庫中的模式之間移動安全性。

該腳本會將'myschema'中的表,存儲過程和視圖轉移到'dbo'模式。修改以適應您的需求並運行此TSQL腳本:

SELECT 'ALTER SCHEMA dbo TRANSFER ' + s.Name + '.' + o.Name 
FROM sys.objects o 
INNER JOIN sys.schemas s on o.schema_id = s.schema_id 
WHERE s.Name = 'myschema' 
AND (o.Type = 'U' OR o.Type = 'P' OR o.Type = 'V') 

然後將輸出複製到另一個查詢窗口並運行。 (小心,在移動之前檢查一切正確)

相關問題