簡體   English   中英

鏈接服務器的過程SQL Server

[英]Procedure for linked servers SQL Server

我必須為分布式數據庫創建存儲過程whit參數。 我正在使用SQL Server Management Studio Express。 必須使用類似以下的運算符在分布式數據庫中搜索過程:

UNION
INTERSECT
EXCEPT
RPC

我已經寫了一個腳本,但是沒有用。

CREATE PROC UnioProccedure
   @Par_IDProdukt int,
   @Par_IDProducent int,
   @Par_Model char(20)
AS
   INSERT dbo.PRODUKT (IDProdukt, IDProducent, Model)
   VALUES (@Par_IDProdukt, @Par_IDProducent, @Par_Model)

   SELECT (
       SELECT * FROM PRODUKT 
       UNION
       SELECT * FROM [SERVERX].Shop.dbo.myTable
       WHERE 
          IDProdukt = @Par_IDProdukt and
          IDProducent = @Par_IDProducent AND
          Model = @Par_Model) a
GO

我的第二個問題是:

基於2PC協議,為兩個服務器的分布式事務創建存儲過程。

我只需要一個模式。

請幫忙 :)

無論鏈接服務器出現什么問題,SELECT的結構都不適合INSERT。 我也沒有找到創建子查詢的理由。 為了清楚起見,在使用UNION時,應為列命名(UNION ALL的性能更好)。

嘗試這個:

SELECT Col1 AS [ProdId],
       Col2 AS [IDProducent],
       Col3 AS [Model]
FROM PRODUKT AS P
UNION ALL
SELECT 
       Col1 AS [ProdId],
       Col2 AS [IDProducent],
       Col3 AS [Model]
FROM [SERVERX].Shop.dbo.myTable AS MT
WHERE 
  IDProdukt = @Par_IDProdukt and
  IDProducent = @Par_IDProducent AND
  Model = @Par_Model

顯然,我不知道該如何稱呼您的列,但在使用UNION ALL時需要提供一致的名稱,否則必須引用其位置(1,2,3 ...),這很丑陋。

確保更改WHERE子句,並為列添加正確的表別名作為前綴。

您是否閱讀過分布式交易?

http://technet.microsoft.com/zh-CN/library/ms191156(v=sql.105).aspx

您是否在鏈接服務器上閱讀過?

http://msdn.microsoft.com/en-us/library/ff772782.aspx

請閱讀並嘗試一下。 您會比我學到更多的東西給您答案...

關鍵是兩個服務器上都必須運行MSDTC。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM