小编S L*_*S L的帖子

SQL Server:无法为链接服务器"(null)"初始化OLE DB提供程序"Microsoft.ACE.OLEDB.12.0"的数据源对象

我正在尝试运行以下查询:

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文件夹.

(这些都是我在这个问题的类似答案中找到的建议) …

sql-server excel openrowset

11
推荐指数
2
解决办法
3万
查看次数

T-SQL:OVER中的WHERE子句(PARTITION BY ... ORDER BY ...)

我有以下查询

;WITH tmp AS
(
    SELECT *, ROW_NUMBER()
    OVER
        (PARTITION BY to_tel, duration, call_date 
        ORDER BY rates_start DESC) as rn
    FROM ##TempTable
)
SELECT *
FROM tmp
WHERE rn = 1
ORDER BY customer_id, to_code, duration
Run Code Online (Sandbox Code Playgroud)

但我想修改它不会给我最大的rates_start,但是在某个日期之前的最大rate_start.有什么方法可以做到这一点吗?

t-sql sql-server

8
推荐指数
1
解决办法
4万
查看次数

colors xml:"属性缺少Android命名空间前缀"

这是我的colors.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="white">#ffffff</color>
</resources>
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误:属性缺少Android命名空间前缀我可以更改什么以使此错误消失?

xml android

2
推荐指数
1
解决办法
5256
查看次数

标签 统计

sql-server ×2

android ×1

excel ×1

openrowset ×1

t-sql ×1

xml ×1