我正在尝试运行以下语句,但正在接收下面的错误消息.我已经研究过没有尽头的答案,没有一个对我有用.我正在运行Office 365(64位).我已加载Microsoft Access数据库引擎(64位).这是在带有SSDT的Visual Studio 2013以及SQL Server 2012中.我无权访问更改环境或启动参数到SQL Server.任何帮助表示赞赏.
SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.15.0',
'Excel 12.0;Database=C:\Users\UserName\Folder\SomeFile.xlsx;;HDR=NO;IMEX=1', [Table 1$])
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的:
首先,我跑了......
sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO
Run Code Online (Sandbox Code Playgroud)
紧随其后......没有爱情.
EXEC sys.sp_addsrvrolemember @loginame = N'<<Domain\User>>', @rolename = N'sysadmin';
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.15.0', N'AllowInProcess', 1
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.15.0', N'DynamicParameters', 1
GO
Run Code Online (Sandbox Code Playgroud)
我已经将代码更改为阅读Microsoft.ACE.OLEDB.12.0,因为我已经看到了,仍然没有爱.
我还检查了C:\ Users\MSSQLSERVER\AppData\Local\Temp和C:Windows\ServiceProfiles\NetworkService\AppData\Local的权限,这些权限已授予对以下内容的完全控制权:System,MSSQLSERVER和Administrators,Network Service(on后者).
仍然没有爱.
最后,我尝试更改为32位版本的Microsoft Access数据库引擎,该版本一直无法正常工作.
帮忙,有人吗?
我遇到此查询时遇到问题:
SELECT *
FROM OPENROWSET(
'SQLNCLI',
'DRIVER={SQL Server};',
'EXEC dbo.sProc1 @ID = ' + @id
)
Run Code Online (Sandbox Code Playgroud)
给出错误:
'+'附近的语法不正确.
任何人都知道我为什么会收到这个错误?
我试图从我的Table数据导出到Excel通过T-SQL查询.经过一些研究,我想出了这个
INSERT INTO OPENROWSET ('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=G:\Test.xls;',
'SELECT * FROM [Sheet1$]')
SELECT *
FROM dbo.products
Run Code Online (Sandbox Code Playgroud)
当我执行上述查询时出现此错误
消息7302,级别16,状态1,行7无法为链接服务器"(null)"创建OLE DB提供程序"Microsoft.Jet.OLEDB.4.0"的实例.
所以通过互联网寻求解决方案,得到以下链接
在上面的链接中,他们说我们需要管理员在C盘 TEMP文件夹中创建文件夹,因为在文件夹中OPENROWSET创建了一些文件或文件TEMP夹
我在My Home PC中这样做,我是管理员.仍然得到同样的错误.
SQL SERVER详细信息
Microsoft SQL Server 2016(RC1) - 13.0.1200.242(X64)2016年3月10日16:49:45版权所有(c)Windows 10 Pro 6.3上的Microsoft Corporation企业评估版(64位)(Build 10586 :)
任何解决问题的指针都将受到高度赞赏
更新:我已经配置了Ad Hoc Distributed Queries和
执行以下查询
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'AllowInProcess', 1
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'DynamicParameters', 1
GO
Run Code Online (Sandbox Code Playgroud)
现在我收到了这个错误
消息7438,级别16,状态1,行7 32位OLE DB提供程序"Microsoft.Jet.OLEDB.4.0"无法在64位SQL Server上进行加载.
我试图将testdabse.invoice表的数据复制到basecampdev.invoice表.
testdabse是basecampdev在服务器中的本地数据库.
它说,我将数据复制到另一个表的查询不起作用
Invalid object name 'basecampdev.dbo.invoice'.
Run Code Online (Sandbox Code Playgroud)
我一直在阅读这个文档,但发现很难理解和理解.
这些是从服务器给出的信息
Server type: Database Engine
Server name: server.database.windows.net (this is not the real name)
Authentication: SQL Server Authentication
Login: myusername
Password: mypassword
Run Code Online (Sandbox Code Playgroud)
如何连接到服务器以便我能够运行此查询
INSERT INTO [basecampdev].[dbo].[invoice]
([InvoiceNumber]
,[TotalAmount]
,[IsActive]
,[CreatedBy]
,[UpdatedBy]
,[CreatedDate]
,[UpdatedDate]
,[Remarks])
SELECT [InvoiceNumber]
,[TotalAmount]
,[IsActive]
,[CreatedBy]
,[UpdatedBy]
,[CreatedDate]
,[UpdatedDate]
,[Remarks] FROM [testdabse].[dbo].[invoice]
Run Code Online (Sandbox Code Playgroud)
屏幕截图

我正在尝试使用带有"Microsoft.ACE.OLEDB.12.0"OLE DB提供程序的T-SQL OpenRowset()命令将Excel 2007(.xlsx)文件中的数据导入SQL Server 2008,并且我得到一个持久的"找不到可安装的ISAM"错误.所有硬件都是32位.
[修订于2012年1月10日,试图更加集中于异常]
以下T-SQL语句产生错误:
SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Data Source=C:\work\TestData.xlsx;Extended Properties="Excel 12.0 XML;HDR=YES"',
'SELECT * FROM [Sheet1$]'
)
Run Code Online (Sandbox Code Playgroud)
如果我以"Excel 97-2003"格式(.xls)保存Excel文件并使用较旧的Microsoft.Jet.OLEDB.4.0提供程序导入数据,它可以正常工作.这让我觉得这不是安全或其他环境问题.
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\work\TestData.xls;HDR=YES',
'SELECT * FROM [Sheet1$]'
)
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用Microsoft.ACE.OLEDB.12.0提供程序的*.xls文件时,它应该向后兼容*.xls格式,它再次失败并出现相同的错误:
SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Data Source=C:\work\TestData.xls;Extended Properties="Excel 8.0;HDR=YES";',
'SELECT * FROM [Sheet1$]'
)
Run Code Online (Sandbox Code Playgroud)
另外,有趣的是,当我使用SSMS"导入数据..."向导时,它工作正常.我将导入数据向导输出保存为SSIS包,并查看SSIS文件以试图弄清楚它是如何工作的,并且它已成功使用Microsoft.ACE.OLEDB.12.0提供程序.这是SSIS包中的连接字符串:
<DTS:Property DTS:Name="ConnectionString">
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\work\TestData.xlsx;Extended Properties="Excel 12.0 XML;HDR=YES";
</DTS:Property>
Run Code Online (Sandbox Code Playgroud)
我还完成了相关的SQL Server配置以允许OPENROWSET分布式查询:
sp_configure 'show advanced options', 1
reconfigure
GO
sp_configure 'Ad Hoc Distributed Queries', 1
reconfigure
GO
Run Code Online (Sandbox Code Playgroud)
如果我还设置了以下*sp_MSset_oledb_prop*值(我在某个帖子中找到)...
USE [master]
GO
EXEC …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种快速而又脏的方法将CSV文件导入SQL Server,而无需事先创建表并定义其列.
每个导入的CSV都将导入到自己的表中.
我们不关心数据类型推理.CSV的结构和布局各不相同,并且所有列都有很多列,但我们只关注其中的一些:街道地址和邮政编码.我们只想快速将CSV数据导入SQL数据库并提取相关列.
我想提供FieldTerminator和RowTerminator,将它指向CSV,并让实用程序完成其余工作.有没有办法创建表并使用BULK INSERT和/或OpenRowset(BULK ...)一步一步地填充它?
sql-server bulkinsert sql-server-2000 create-table openrowset
我正在尝试将Azure Blob存储中存在的以下Excel文件导入SQL Server
EXCEL文件
询问
SELECT *
FROM OPENROWSET(
BULK 'container/testfile.xlsx',
DATA_SOURCE = 'ExternalSrcImport',
FORMATFILE='container/test.fmt', FORMATFILE_DATA_SOURCE = 'ExternalSrcImport',
codepage = 1252,
FIRSTROW = 1
) as data
Run Code Online (Sandbox Code Playgroud)
格式化文件
10.0
4
1 SQLCHAR 0 7 "\t" 1 DepartmentID ""
2 SQLCHAR 0 100 "\t" 2 Name SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 100 "\t" 3 GroupName SQL_Latin1_General_CP1_CI_AS
4 SQLCHAR 0 24 "\r\n" 4 ModifiedDate ""
Run Code Online (Sandbox Code Playgroud)
格式文件说明
当我执行查询时,出现以下错误
消息4863,级别16,状态1,行210的行1,列1(部门ID)的大负荷数据转换错误(截断)。
看起来格式文件中的字段终止符不起作用,导入文件有什么想法吗?
我将使用以下sql从excel读取数据,但有时我需要先跳过几行.例如,真实数据从第5行开始,所以我需要跳过前4行,这是可行的吗?
SELECT *
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;HDR=YES;Database=c:\daniel\test.xls',
'SELECT * FROM [sheet1$]');
Run Code Online (Sandbox Code Playgroud) 我有一组名为GreenLine1.mp3,GreenLine2.mp3等的音频文件我将把它们写成BLOB(我使用的是MS SQL Server'08),这是我的sql请求:
DECLARE @aud AS VARBINARY(MAX)
DECLARE @num AS INT
-- Load the audio data
SET @num=1
WHILE (@num<38)
BEGIN;
SELECT @aud = CAST(bulkcolumn AS VARBINARY(MAX))
FROM OPENROWSET(
BULK
'C:\Users\Ilya\folder\GreenLine' + CAST(@num AS VARCHAR) + '.mp3',
SINGLE_BLOB ) AS x
-- Insert the data to the table
INSERT INTO Mb2.dbo.Audios (Id, [Content])
SELECT NEWID(), @aud
SET @num = @num + 1
END;
Run Code Online (Sandbox Code Playgroud)
我有一个错误:'+'附近的语法不正确,期待','或')'.
如果我试着写
'C:\ Users\Ilya\folder\GreenLine'+ CAST(@num AS VARCHAR)+'.mp3'
变成一个变量并把它放在BULK之后,我在@variable,期望STRING或TEXT_LEX附近得到不正确的语法
我正在尝试运行以下查询:
SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;Database=C:\Somefile.xlsx',
'SELECT * FROM [Sheet$]')
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
Cannot initialize the data source object of OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)".
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法:
sp_configure 'show advanced options', 1;
RECONFIGURE;
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO
Run Code Online (Sandbox Code Playgroud)
和:
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
Run Code Online (Sandbox Code Playgroud)
当我转到"服务器对象" - >"链接服务器" - >"提供商"时,会列出Microsoft.ACE.OLEDB.12.0.
安装了Acess Database Engine x64,所有Office产品都是64位,而我的SQL Server也是64位.
如果重要,所有用户都可以访问Users文件夹中的Temp文件夹.
(这些都是我在这个问题的类似答案中找到的建议) …
openrowset ×10
sql-server ×7
sql ×6
t-sql ×2
azure ×1
bulkinsert ×1
create-table ×1
excel ×1
excel-2007 ×1
isam ×1
oledb ×1