2011-03-21 69 views
0

我有一個設計,其中有兩個SQL Server數據庫。我有一個包含DML語句的事務到兩個數據庫。使用msdtc進行跨服務器事務,在沒有動態SQL的情況下切換DML的上下文

問題是沒有預定義第二個數據庫名稱。它可以是存儲過程的參數。我想在每個DML語句中指定數據庫名稱和服務器名稱。

不使用動態SQL,是否有切換語句的上下文的方法。

或者簡單地說:如何在服務器名稱和數據庫名稱是動態參數的DML語句中添加服務器名稱和數據庫名稱的前綴?

有沒有辦法做到這一點,而不使用動態SQL?還是有另一種方法來處理這個問題?

回答

0

在單獨的SP或進程中處理DML不是一種更好的做法,而不是將它們加入到現有進程中。不可能使用四部分名稱中的變量:除非另行指定,否則所有對數據庫對象名稱的Transact-SQL引用可以是以下形式的四部分名稱:

server_name。[database_name ]。[schema_name] .object_name

| database_name。[schema_name] .object_name

| schema_name.object_name

| object_name

server_name 指定鏈接的服務器名稱或遠程服務器名稱。

database_name 指定對象駐留在SQL Server的本地實例中時的SQL Server數據庫的名稱。當對象位於鏈接服務器中時,database_name指定一個OLE DB目錄。

schema_name 如果對象位於SQL Server數據庫中,則指定包含該對象的模式的名稱。當對象位於鏈接服務器中時,schema_name指定OLE DB模式名稱。有關架構的更多信息,請參見用戶架構分離。

object_name 指的是對象的名稱。

相關問題