我發現這裏的樣本代碼:有沒有一種方法來查詢SQL Server鏈接服務器沒有硬編碼數據庫名稱?
SELECT * FROM [legacyserver].[database].[schema].[table]
表示爲:
SELECT * FROM [legacyserver]...[table]
,但不是爲我工作。
它給我的錯誤:我使用了傳統的服務器SQL Server 2000和新的服務器SQL Server 2012的
我嘗試使用創建鏈接的服務器
An invalid schema or catalog was specified for the provider "MSDASQL" for linked server "legacyserver".
:
EXEC sp_addlinkedserver
@server = 'legacyserver',
@srvproduct = '',
@provider = 'MSDASQL',
@provstr = 'DRIVER={SQL Server};SERVER=legacyserver;DATABASE=database;Trusted_Connection=Yes;',
和:
EXEC sp_addlinkedserver
@server = 'legacyserver',
@srvproduct = '',
@provider = 'MSDASQL',
@provstr = 'DRIVER={SQL Server};SERVER=legacyserver;Trusted_Connection=Yes;',
@catalog = 'database';
是否有可能建立一個沒有硬編碼的數據庫名稱的腳本?
我需要建立一個真正的大遷移腳本,它需要使用的開發,驗收和生產數據庫,這將是大量的工作,而且容易出錯使用文本編輯器代替去改變它。
UPDATE:
遺留髮展,驗收和生產數據庫是完全一樣的(除了數據),每一個都有它自己的服務器/實例和數據庫名稱。
由於職責分工,我不能開發的東西和部署,所以我沒有辦法驗收合格後碰這個腳本。我需要指導別人這樣做,如果他/她將需要更換的[legacyserver]每次出現。[數據庫],出錯的機率非常高。
在SQL 2000實例上有開發,接受和生產數據庫的全部功能嗎?所有三個數據庫的結構是否相同(相同的表格,視圖等)? – DMason
完全相同的表格,視圖等不同的實例和數據。 我只能訪問開發和驗收。該腳本將由DBA使用生產服務器執行。 – LawfulHacker
鏈接服務器的「Lazy Schema Validation」是否設置爲true?這在黑暗中有點跛腳,但值得嘗試。順便說一句,您需要Enterprise或Developer Edition才能使用此功能。 – DMason