我正在尝试将数据从XML文件导入数据库。我使用BULK INSERT
创建了一个测试脚本,但是当我在实时数据库上测试时,BULK
的权限被禁用。
尝试#1:
BULK INSERT XMLTable FROM 'C:\Radu\test.xml' WITH (ROWTERMINATOR = '>');
因此,我一直在研究如何避免使用BULK
并找到其他选项,例如OPENROWSET
和OPENDATASOURCE
。但不幸的是,这些行动的权利也被撤销。
尝试#2:
SELECT *
FROM OPENROWSET('MSDASQL',
'Driver={Microsoft Text Driver (*.xml)};DefaultDir=C:\Radu\test.xml;',
'SELECT * FROM [test.xml];' )
导致错误:
Msg 15281, Level 16, State 1, Line 1
SQL Server blocked access to STATEMENT 'OpenRowset/OpenDatasource' of component 'Ad Hoc Distributed Queries' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'Ad Hoc Distributed Queries' by using sp_configure. For more information about enabling 'Ad Hoc Distributed Queries', see "Surface Area Configuration" in SQL Server Books Online.
我已尝试RECONFIGURE
这方面的权限,但没有成功。
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
也导致了:
Msg 15247, Level 16, State 1, Procedure sp_configure, Line 94
User does not have permission to perform this action.
Msg 5812, Level 14, State 1, Line 2
You do not have permission to run the RECONFIGURE statement.
Msg 15123, Level 16, State 1, Procedure sp_configure, Line 51
The configuration option 'Ad Hoc Distributed Queries' does not exist, or it may be an advanced option.
Msg 5812, Level 14, State 1, Line 4
You do not have permission to run the RECONFIGURE statement.
我仍然试图找到一个解决方案只是为了将信息导入数据库,我不需要特殊的格式,只是为了获取系统中的数据,尽管理想情况下我想将每个xml行导入为我桌上的记录。
看来我的大多数选项都被切断了,所以我非常感谢任何建议。
更新
我将创建一个存储过程来导入这些数据,因此理想情况下这将是通用的,不需要使用XML信息进行硬编码。
答案 0 :(得分:0)
对于BULK INSERT操作,您需要该数据库的管理员权限。您可以在XML变量中获取XML数据并插入到表中,如此链接中所述:
答案 1 :(得分:0)
由于您没有批量上传权限,因此您需要一些工具将XML转换为XSLX或XSL,然后打开它并复制所有行并将其粘贴到表中。
或
这仍然使用批量加载组件,尝试它,如果它工作。