2013-08-16 43 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加入。没有我想要的那样优雅,但它有效。

感谢所有谁回答!

结案

还是学习史蒂夫