从 32 位迁移到 64 位,如何使链接服务器 (sp_addlinkedserver) 工作
以下是一些示例代码,在 32 位计算机(SQL Server 2005)中运行良好,需要更新为 64 位...我知道这是一个常见问题,但一直无法找到解决方法!
DECLARE @sourceFile varchar(255), @testRows int
SELECT @sourceFile = @xmlInfo.value('(/SelectFile/DataSource)[1]', 'VARCHAR(100)')
EXEC sp_addlinkedserver 'SomeData', 'Excel', 'Microsoft.Jet.OLEDB.4.0', @sourceFile, '', 'Excel 8.0', ''
IF @xmlInfo.exist('/SelectFile/DataSource') = 1
BEGIN
EXEC(' INSERT INTO TableTest
SELECT col1_Id, col2, Replace(col3, '' '', '''')
FROM OPENROWSET(''Microsoft.Jet.OLEDB.4.0'',
''Excel 8.0;HDR=Yes;Database='+@sourceFile+''', [Sheet1$])')
SELECT @testRows = @@ROWCOUNT, @totalRows = @totalRows + @@ROWCOUNT
END
我正在尝试的另一件事是使用 bcp 实用程序从表创建 .fmt 文件,这样我就可以定义正在读取的文件的格式。
任何帮助将不胜感激!
Here is some sample code that worked fine in a 32-bit machine (SQL server 2005) and needs to be updated for a 64-bit... I know this is a common problem but have not been able to find how to fix it!
DECLARE @sourceFile varchar(255), @testRows int
SELECT @sourceFile = @xmlInfo.value('(/SelectFile/DataSource)[1]', 'VARCHAR(100)')
EXEC sp_addlinkedserver 'SomeData', 'Excel', 'Microsoft.Jet.OLEDB.4.0', @sourceFile, '', 'Excel 8.0', ''
IF @xmlInfo.exist('/SelectFile/DataSource') = 1
BEGIN
EXEC(' INSERT INTO TableTest
SELECT col1_Id, col2, Replace(col3, '' '', '''')
FROM OPENROWSET(''Microsoft.Jet.OLEDB.4.0'',
''Excel 8.0;HDR=Yes;Database='+@sourceFile+''', [Sheet1$])')
SELECT @testRows = @@ROWCOUNT, @totalRows = @totalRows + @@ROWCOUNT
END
Another thing I'm trying out is to create a .fmt file from a table, using the bcp utility, so I can define the format of the file being read.
Any help would be greatly appreciated!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为 Excel 仍然只有 32 位驱动程序。所以我不知道您是否能够使用该驱动程序来使用链接服务器。
最好的选择是使用导入数据向导导入数据并保存包(向导中的最后步骤之一),然后您可以重新运行包来刷新数据。客户端工具都是32位的,所以使用32位驱动程序没有问题
I think there is still only a 32bit driver for Excel. So i don't know if you'll be able to use a Linked Server using that driver.
Your best bet would be to import the data using the Import Data wizard and save the package (one of the final steps in the wizard) then you can just re-run the package to refresh the data. The client tools are all 32bit so there is no problems using the 32bit driver there