问题标签 [openrowset]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6104 浏览

sql-server-2008 - 如何找出 SQL Server 上 OLE 提供程序权限的原因?

我在 Windows 7 64 位上安装了 Office 2010 64 位。Windows 7 上也安装了 SQL Server 2008。

然后我尝试使用Microsoft.ACE.OLEDB.12.0T-SQL 从 excel 文件中访问数据。

我在 SQL Server Mgmt Studio 中使用以下类型的查询尝试 T-SQL:

如果我使用“以管理员身份运行”启动 SQL Server Mgmt Studio,那就没问题了。我可以从/向 Excel 文件访问/插入数据。

如果我直接启动 Mgmt Studio(使用我的 AD 帐户),我会收到如下错误:

链接服务器“(null)”的 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”返回消息“未指定错误”。
消息 7303,级别 16,状态 1,第 1 行
无法为链接服务器“(null)”初始化 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”的数据源对象。

但实际上,我的帐户也是一个管理员帐户(它在本地管理员组和 AD 管理员组中)。

因为我需要像OpenRowSet在代码中一样运行 T-SQL,所以不知道如何解决这个问题。

在这种情况下,看起来 OpenRowSet 只允许本地管理员运行 MSSM。

我尝试从另一台计算机运行 MSSM,并得到与上述相同的错误。

0 投票
1 回答
8159 浏览

sql - 如何使用 OpenRowSet 将数据插入空白文件?

如何使用OpenRowSet将数据插入空白文件?

我需要从数据库中插入一些选择输出(比如select * from sys.tables)到 txt 文件(比如 D:\TDB)

我明白了

链接服务器“(null)”的 OLE DB 提供程序“MICROSOFT.JET.OLEDB.4.0”返回消息“Microsoft Jet 数据库引擎找不到对象 'sys.tables.txt'。确保该对象存在并且您拼写它的名称和路径名正确。”。

消息 7350,第 16 级,状态 2,线路

1 无法从链接服务器“(null)”的 OLE DB 提供程序“MICROSOFT.JET.OLEDB.4.0”获取列信息。

怎么了?

PS。请不要提出bcp解决方案,因为已经测试过并且每次都不起作用,所以我现在要测试openrowset ..

0 投票
1 回答
451 浏览

sql-server-2005 - OpenRowSet 中的 Unicode 查询

我有一个带有 nvarchar 参数的存储过程。我想使用 OPENROWSET 返回表。但是当我使用以下代码时,结果将不正确

OPENROWSET 会将我的查询转换为 VARCHAR 并且不会正确执行我的过程。似乎 OPENROWSET 像这样执行我的代码:

所以结果不正确。OPENROWSET 中是否有任何选项可以解决我的问题?

0 投票
0 回答
2080 浏览

sql-server - 在 Excel 中使用 OPENROWSET 时出现“单线程单元模式”错误

我有一个 Excel 文件。我需要将该 Excel 文件导入 SQL Server,我正在使用此查询

但我收到如下错误:

消息 7308,级别 16,状态 1,第 1 行 OLE DB 提供程序“Microsoft.Jet.OLEDB.4.0”不能用于分布式查询,因为提供程序配置为在单线程单元模式下运行。

0 投票
2 回答
40022 浏览

sql - SQL SELECT * FROM OPENROWSET 带变量

我正在尝试将变量传递给 OPENROWSET 中的 SELECT 语句,但我不断收到错误消息

我使用什么语法来应用@SQL

我得到的错误是:

错误是:OLE DB provider "MSDASQL" for linked server "(null)" returned message "[Pervasive][ODBC Client Interface][LNA][Pervasive][ODBC Engine Interface]Error in predicate: TranDate = '(SELECT @ dDateTIME)' "

0 投票
1 回答
3144 浏览

sql-server - 在存储过程代码中调用 sqlcmd 命令

由于 Linked Server 不容易发送 openrowset 查询,我直接通过 SQLCMD 模式连接到远程 Sql Server。但这没关系使用查询分析器。当我将代码放入存储过程时,我什至无法保存它:

':' 附近的语法不正确。

0 投票
2 回答
747 浏览

tsql - 每天将 Access 97 表复制到 SQL Server 2008 R2 64 位

我有一个古老的系统,它使用 Access 97 数据库来存储信息。我想每天将 90 多个表中的数据复制到 SQL Server 2008 数据库中。我已经有了 SS2008 中定义的表。

有一个同样古老的 DTS 作业,每个表都有一个单独的 box-line-box。我宁愿使用用代码编写的更易于维护的方法,而不是行和框。(是的,我知道 SSIS 行和框被翻译成 XML,但这对我来说读和写有点困难。)

我无法使用 Linked Server 或 OPENROWSET,因为我的 SS2008 服务器作为 64 位进程运行,因此 OLEDB Jet 驱动程序不可用。OLEDB MSOffice ACE 12.0 驱动程序是 64 位的,但它不应该与数据库服务器一起使用,因为它不是线程安全的(根据 Microsoft)。此外,尽管进行了广泛的研究,但我无法让它在 SS2008 中工作(“找不到可安装的 ISAM”)。我可以在 SSIS 等 32 位程序中使用 OLEDB Jet 读取 Access 表。

因此,我正在寻找一种现代的、非盒装式的、优雅的 32 位解决方案来将表从 Access mdb/mdw 文件复制到 SS2008。

我可以这样做:

  • 单个 T-SQL 脚本
  • 一些 C# 的东西,它进行自省以确定表结构,然后为每个表执行 SQL
  • 一些神奇的“将每个表从这个 OLEDB 复制到那个 SQL Server”包

这个问题有几个关闭的副本(定期将访问数据库复制到 SQL 服务器将访问表迁移到 SQL Server - 初学者),但没有一个处理使 OPENROWSET/Linked Server 成为非选项的 32 位限制。

0 投票
2 回答
3627 浏览

sql-server-2008 - 使用 OpenRowSet 从 SQL Server Management Studio 连接到 Access 2000 数据库

我正在尝试从 SQL Server Management Studio 连接到 Access 2000 数据库。我目前的查询是:

最初,我试图使用 Microsoft.Jet.OLEDB.4.0 作为提供者。由于两台服务器实际上都在 64 位操作系统上运行,因此我不得不切换到 Microsoft.ACE.OLEDB.12.0。

运行此查询会返回以下错误:

我查过了,没有人打开数据库。如果我尝试将用户名和密码更改为对数据库具有管理访问权限的内容,则会返回以下错误:

最终,我需要做的是能够运行一系列 INSERT/UPDATE 语句以保持数据库最新,直到我们在转换过程中进一步替换它。为了使这些查询成功运行,我需要进行哪些更改?

0 投票
1 回答
14670 浏览

sql-server - SELECT FROM OPENROWSET(BULK...) 更改特殊字符

我已经面临一个问题几个小时了,我似乎无法理解这个问题。

所以我有一个 SQL Server 数据库 2008R2,排序规则 SQL_Latin1_General_CP1_CI_AS。里面有一个表,有一个名为incoming_name 的字段。该字段的排序规则也是 SQL_Latin1_General_CP1_CI_AS,它是一个 NVARCHAR(255)。

我有一个大约 123000 行的 .csv 文件。这是一个基本的 csv,文本周围没有双引号,但字段内没有逗号,所以当我手动导入数据库时​​,它工作正常。incoming_name 字段包含所有类型的文本,但从不超过 255 个字符。并且在几行中有法语口音(如“Ch* â *teau d'Agassac”)。

现在我尝试使用代码

带格式文件

导入工作正常,我得到了所有数据,在正确的字段中具有正确的值,除了重音......

例如,当我where test_file.incoming_name like '%agassac%'在查询末尾添加时,我得到的结果类似于“Château d'Agassac”,而不是数据库中的原始数据“Château d'Agassac”。

我不明白的是,我觉得在这个过程的每一步,我确实选择了一个区分重音的排序规则,使用 unicode 数据类型(NVARCHAR),所以我真的不明白为什么导入不选择重音.

感谢您阅读这个长长的问题,

约翰。

编辑:好的,看起来我要导入的 .csv 文件是用 utf-8 编码的,而 SQL Server 2008 不想支持 utf-8 导入。现在我不知道该怎么办。欢迎任何想法...

0 投票
0 回答
832 浏览

windows-7 - Microsoft.ACE.OLEDB.12.0 已安装但未显示为 SQL 2008R2 的提供程序

我已经在 Windows7 机器上安装了 Microsoft.ACE.OLEDB.12.0,但它没有出现在注册表相关位的 Providers 下,(HKLM/Software/Microsoft/Microsoft SQL Server/MSSQL10_50.MSSQLSERVER/Providers)并且可能正因为如此,它没有出现在 Linked Servers 的 Providers 列表中SQLServer Management Studio 部分。

我遇到的问题是我正在尝试OPENROWSET对 Excel 电子表格运行查询。

这是在我将我的 Web 应用程序/数据库从 XP 迁移到新的 Windows 7 安装之后。

不用说 XP 盒子上的一切都很好。