日期:2014-05-18  浏览次数:20453 次

相当牛X的技术问题,自认是高手的进来,想要多少分送多少分只要能解决.关于文件导入导入的,千万千万注意是DB_OWNER权限!!
各位朋友大家好,我遇到一个问题,就是我需要把一个ACCESS的数据库导入进MSSQL的一个表中.这个本身不难,但是我只有DB_OWNER权限,就使这件事变得相当难,

我使用 SELECT * into newtable
  FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','C:\databases.mdb';'admin';'', tables)
 
语句导入MDB库,提示错误 

已拒绝对 OLE DB 提供程序 'Microsoft.Jet.OLEDB.4.0' 的特殊访问。必须通过链接服务器来访问此提供程序  

表明DB_NWNER权限不行,同榇的语句我复制一次输入,这次是用的SA帐号测试,成功的导入了MDB库


现在我想请问一下,DB_OWNER权限下,究境有没有能将ACCESS库导入的方法,如果有是什么语句,请看清,是DB_OWNER权限下的



------解决方案--------------------
第一步: 
用查询分析器登录你的目标服务器(假定服务器名称:dserver1,假定你有权限的数据库名为:dbname1)。 
当然是用你哪个只有dbo权限的用户了(假定登录名称为:user1,登录密码为:password1)。 
创建你需要存放数据的表格(假定表名:newtable1)。 
第二步: 
找一台你有sa权限的数据库服务器,这台服务器需要能够连上你的目标服务器dserver1。 
用查询分析器登录该服务器,当然是用sa用户了。 
执行以下代码: 

SQL code

exec sp_addlinkedserver @server='aa', @srvproduct='',@provider='SQLOLEDB', @datasrc='dserver1'
exec sp_addlinkedsrvlogin 'aa','false','sa','user1','password1'     
go
insert aa.dbname1.user1.newtable1
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','C:\databases.mdb';'admin';'', table1) 
select * from aa.dbname1.user1.newtable1
go
exec sp_droplinkedsrvlogin 'aa','sa'
exec sp_dropserver 'aa'