'您必须通过链接服务器访问此提供程序。'
我正从远程数据库服务器远程运行此批处理文件。我正在尝试进行不需要链接服务器的导出。当我在SSMS中运行查询时,它导出正常,但是当它从批处理中执行时,它会在下面给出错误消息。我想这可能是因为他们有2个不同的账户。
这是我的批次代码:
SQLCMD -S dbserver -E -d dbname-i \\Network\fldr\rpt\test\script.sql
PAUSE
这是我的SQL脚本:
SET ANSI_NULLS ON
GO
SET ANSI_WARNINGS ON
GO
SET QUOTED_IDENTIFIER ON
GO
PRINT 'exporting data...'
INSERT INTO OPENROWSET(
'Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;
Database=\\Network\fldr\rpt\test\testdata.xls;',
'SELECT * FROM [Sheet1$]') SELECT * FROM [dbo].view_test ORDER BY [Col4]
cmd中的错误消息:
答案 0 :(得分:0)
我解决了这个问题。当从我的工作PC运行批处理文件时,它使用不同的帐户命中SQL Server - 我的Active Directory帐户凭据,这是SSMS中不存在的帐户。我创建了帐户,但它确实有效。
我之前采取的其他步骤(也是需要的)如下:
1)跑这个代码
USE [master]
GO
EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 1
GO
EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 1
GO
2)编辑注册表并添加DWORD" disallowAdHocProcess"值为" 0"在这个位置: [HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SQL Server \ MSSQL10.SQLADV \ Providers \ Microsoft.ACE.OLEDB.12.0] " disallowAdHocProcess" = DWORD:00000000
3)本文:http://support.microsoft.com/kb/814398并使用ProcMon程序查找我被拒绝访问的临时路径。