我目前正在运行第三方软件套件,它使用SQL Server作为其数据库.我有一个在不同位置运行的第二个SQL Server实例,我在该实例中构建的一些应用程序SQL Server需要访问第三方软件中的某些数据.因此,我在框之间创建了一个ODBC连接,并在我的SQL Server版本上将第三方SQL服务器设置为链接服务器.作为测试,我从我的SQL服务器运行以下语句,访问第三方表之一:
SELECT * FROM LinkedServerName.SchemaName.dbo.TableName
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误:
OLE DB error trace [Non-interface error: Column 'TableRowVersion' (compile-time
ordinal 4) of object '"SchemaName"."dbo"."TableName"' was reported to have a
DBCOLUMNFLAGS_ISROWVER of 0 at compile time and 512 at run time].
Msg 7356, Level 16, State 1, Line 1
OLE DB provider 'MSDASQL' supplied inconsistent metadata for a column. Metadata
information was changed at execution time.
Run Code Online (Sandbox Code Playgroud)
对于我尝试访问的任何其他表,此错误都是相同的.这个错误意味着什么,是否有办法绕过它?
在启动应用程序时,如何确保安装某个OLEDB驱动程序?我使用Delphi的ADO,如果缺少驱动程序,则希望显示描述性错误消息.从ADO返回的错误并不总是那么用户友好.
可能有一个很好的小函数返回所有已安装的驱动程序,但我还没有找到它.
我一直在使用Microsoft.Jet.OLEDB.4.0和Microsoft.ACE.OLEDB.12.0来读取.csv,.xls和.xlsx文件.
我刚刚发现原生64位模式都不支持这些技术!
我有两个问题:
在64位模式下以编程方式读取.csv,.xls和.xlsx文件的支持方式是什么.我无法在任何地方找到答案.
如果我无法读取所有三种文件类型,那么在64位环境中读取.csv文件的最佳方法是什么?
笔记:
更新:
我可以使用CorFlags强制应用程序以32位模式运行,这是有效的,但是不可取.
我正在使用OleDbConnection类从Excel 2000/2003工作簿中检索数据:
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + filename + ";" +
"Extended Properties=\"Excel 8.0;IMEX=1\";";
OleDbConnection connection = new OleDbConnection(connectionString);
connection.Open();
// code to get table name from schema omitted
var dataAdapter = new OleDbDataAdapter(string.Format("SELECT * FROM [{0}]", name),connection);
var myDataSet = new DataSet();
dataAdapter.Fill(myDataSet, "ExcelInfo");
Run Code Online (Sandbox Code Playgroud)
现在结果表明,工作表中长度大于255个字符的单元格正在被截断.这是Microsoft.Jet.OLEDB提供程序中的限制,还是我可以做些什么呢?
任何人?
SQL Server 2008链接服务器和临时INSERT导致快速内存泄漏,最终导致服务器无响应,并以以下错误结束:
Msg 701, Level 17, State 123, Server BRECK-PC\SQLEXPRESS, Line 2
There is insufficient system memory in resource pool 'internal' to run this
query.
Location: qxcntxt.cpp:1052
Expression: cref == 0
SPID: 51
Process ID: 1880
Run Code Online (Sandbox Code Playgroud)
在重新启动SQL Server之前,服务器仍然没有响应.
使用的软件:
Windows Vista Ultimate 64位构建6001 SP1
Microsoft SQL Server 2008(SP1) - 10.0.2734.0(X64)2009年9月11日14:30:58版权所有(c)1988-2008 Microsoft Corporation在Windows NT 6.0上具有高级服务(64位)的Express Edition(Build 6001:Service包1)
SQL Anywhere 11.0.1.2276中的SAOLEDB.11驱动程序
将最大服务器内存(MB)设置为2048没有帮助.
将各种-g值(例如,-g256;)添加到服务器启动参数没有帮助.
使用DBCC FREESYSTEMCACHE('ALL'),DBCC FREESESSIONCACHE和DBCC FREEPROCCACHE没有帮助.
将Cumnulative更新包4安装到SQL Server 2008 Service Pack 1没有帮助,即使它包含对涉及链接服务器使用的内存泄漏症状的修复.
从INSERT中分离SELECT ... ROW_NUMBER()OVER ...查询没有帮助.实验表明复杂的SELECT没有引起内存泄漏,INSERT就是这样.
更改代码以使用ad-hoc"INSERT INTO OPENROWSET"语法而不是链接服务器没有帮助; 下面的代码显示了链接的服务器用法. …
我在连接到访问MDB数据库的VBScript时遇到问题.我的平台是Vista64,但其中大部分资源都用于ASP/IIS7.
很简单,我无法连接它.我收到以下错误:800A0E7A - "无法找到提供程序.可能未正确安装"
我的代码是:
Set conn = CreateObject("ADODB.Connection")
strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\database.MDB"
conn.Open strConnect
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经运行了%WINDIR%\ System32\odbcad32.exe来尝试在32位模式下配置驱动程序,但它还没有完成.任何建议将不胜感激
作为一个补充,我试图让这个.vbs脚本通过双击运行,并让它做它的事情.此代码未嵌入到另一个lang /脚本中.
我正在尝试连接到mdb文件,我知道我需要Microsoft.OLEDB.JET.4.0数据提供程序.不幸的是,我没有在(大学)机器上安装它.既然,他们没有提供那个提供者,我相信应该有办法解决.
如何在没有Microsoft.OLEDB.JET.4.0或没有替代方案的情况下连接到文件?
我有以下提供者:

我尝试过使用OLE DB Provider for Microsoft Directory Services,在测试连接的同时,我得到"测试成功,但提供商不接受某些设置".我拿了那根绳子然后用它而且我得到了ADsDSOObject' failed with no error message available, result code: DB_E_ERRORSINCOMMAND(0x80040E14).
如何通过oledb阅读器在Excel中检查单元格是否包含公式?

System.Data.OleDb.OleDbConnection conn2 = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source = " + strFileName + "; Extended Properties = \"Excel 8.0;HDR=NO;IMEX=1\";");
conn2.Open();
string strQuery2 = "SELECT * FROM [" + Table + "]";
System.Data.OleDb.OleDbDataAdapter adapter2 = new System.Data.OleDb.OleDbDataAdapter(strQuery2, conn2);
System.Data.DataTable DT2 = new System.Data.DataTable();
adapter2.Fill(DT2);
Run Code Online (Sandbox Code Playgroud) 我有一个运行脚本任务的SSIS包(主要是和其他一些东西).脚本任务使用OleDB连接连接到Access数据库.这是Microsoft Jet 4.0连接.我安装了驱动程序.但它不会通过代理帐户在SQL Agent中运行.它可以直接从Visual Studio和包存储中运行.事实上,当我以代理所附带的特殊帐户登录时,它在这两个地方都运行良好.但是,当我通过SQL Server代理运行时,我得到了可怕的"未指定错误"OleDbException.
脚本任务的相关代码:
// class field
private string accessConnectionStringTemplate = "Data Source=\"{0}\";Provider=Microsoft.Jet.OLEDB.4.0;";
// in method that connects to database
Print(file, "Connection string: " + string.Format(accessConnectionStringTemplate, file.FileName));
// outputs: Data Source = "\Path\To\File";Provider=Microsoft.Jet.OLEDB.4.0"
using(access = new OleDbConnection(string.Format(accessConnectionStringTemplate, file.FileName))) {
access.Open();
// other code
}
Run Code Online (Sandbox Code Playgroud)
通过SQL代理作业历史记录的错误消息:
Started: 12:35:10 PM
Error: 2016-11-03 12:35:33.51
Code: 0x00000000
Source: Import Files Main
Description: Exception: Unspecified error
End Error
Error: 2016-11-03 12:35:33.51
Code: 0x00000000
Source: Import Files Main
Description: at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection …Run Code Online (Sandbox Code Playgroud) 如何从Proficy Historian/iHistorian检索原始时间序列数据?
理想情况下,我会要求两个日期之间的特定标签的数据.