2013-08-16 45 views
2

perl的5.10 訪問2010 SqlServer的2008 R2鍛造使用DBI

所以我需要在表B中的數據來更新表A列中的SQL語句跨越數據庫服務器使用的Perl腳本,其中A和B有一列我可以加入。

這將工作的偉大

$sqlCmd = "UPDATE aa SET aa.foo = bb.fancyfoo " . 
      "FROM [dbo.serverOne] AS aa " . 
      "RIGHT JOIN [noteTable] AS bb " . 
      "ON aa.[recid] = bb.[recid] " ; 
$sth = $dbh->prepare($sqlCmd); 

IF兩個表在同一個數據庫中,因爲只有一個在遊戲數據庫句柄。 但我的表駐留在不同的數據庫上,實際上在不同的服務器上 - dbo.ServerOne位於SqlServer的實例中,而noteTable位於Access數據庫中(抱歉)。

而額外添加的香料,bb.fancyfoo被定義爲一個MEMO和aa.foo被定義爲爲nvarchar(最大)

坦白說,我看不出這怎麼可以一次實現 - 可以一個SQL命令使用多個數據庫句柄? 如果沒有,我必須使用兩個單獨的命令,即在dbo.ServerOne上的UPDATE和noteTable上的SELECT,我該如何設置它以適用於MEMO/nvarchar(max)字段?我的意思是,如何將數據存儲在表格之間? CLOB?

TIA,

還是學習史蒂夫

回答

1

你的運氣是 - 兩個表可以是在同一個數據庫。

你需要谷歌什麼是「鏈接表」。有一個brief overview here但基本上它可以讓你通過ODBC(或其他支持的連接方法)添加一個外部表。

您可以將Access表連接到SQL Server數據庫或其他方式。這取決於Access文件是否位於固定位置以及您的大部分數據在哪裏。從較大的鏈接到較小的鏈接可能更高效。儘管如此,我期望SQL Server在計劃/執行查詢方面更聰明,所以我會先嚐試一下。

+0

好吧,將會給這個早晨的答覆嘗試,THX! – user1201168

0

既然我們已經schlepping出來的數據的訪問表到SqlServer的表,我決定做通過添加兩個表中字段上鍵入共享密鑰領域hashref加入。沒有我想要的那樣優雅,但它有效。

感謝所有誰回答!

結案

還是學習史蒂夫