问题标签 [jet]
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.
debugging - Microsoft JET SQL 查询日志或“如何调试客户的程序?”
问题:
我们使用我们最大的客户编写的程序来接收订单、预订运输和做其他与订单相关的事情。我们没有其他机会,只能使用该程序,当涉及到他们的程序问题时,客户非常不支持。我们只需要接受这个程序。
现在这个程序在有两个或更多用户使用时,大部分时间都非常慢,所以我试图在幕后寻找问题的根源。
到目前为止我发现的程序的一些要点:
- 它是用 VB 6.0 编写的
- 它使用一个受密码保护的 Access-DB (Access 2000 MDB),它位于一个用户机器上的一个文件夹中。
- 该文件夹通过网络共享并由所有其他用户使用。
- 它使用 msjet40.dll 版本 4.00.9704 与访问进行通信。我猜是ADO?
我还使用Process Monitor来监视文件访问,并找出程序如此缓慢的原因:即使程序处于空闲状态,它也在对 mdb 文件执行数千次读取操作。在网络上,这当然非常慢:
进程监视器跟踪 http://img217.imageshack.us/img217/1456/screenshothw5.png
真正的问题:
有没有办法监控负责读取活动的查询?我可以设置跟踪标志吗?挂钩 JET DLL 的?我猜该程序正在执行一些昂贵的查询,导致 JET 在此过程中读取大量数据。
PS:我已经尝试将mdb放在我们公司的文件服务器上,成功访问它甚至比通过本地共享还要慢。我还尝试更改客户端上的锁定机制(机会锁定),但没有成功。
我想知道发生了什么,需要为我们客户的开发人员提供一些确凿的事实和建议,以帮助他/她更快地完成程序。
c# - 如何在没有互操作程序集的情况下创建 Microsoft Jet (Access) 数据库?
我需要在不使用 ADOX 互操作程序集的情况下创建一个访问 (mdb) 数据库。
如何才能做到这一点?
sql-server - 如何创建指向字段名称中带有句点的 SQL Server 视图的 Jet ODBC 链接?
我需要创建一个从 Access 2003 (Jet) 数据库到 SQL Server 托管视图的 ODBC 链接,其中包含包含句点的别名字段名称,例如:
在视图后面的 SQL 源代码中,字段名称用方括号括起来......
...所以 SQL Server 不会抱怨创建视图,但是当我尝试从 Jet DB(以编程方式或通过 Access 2003 UI)创建指向它的 ODBC 链接时,我收到错误消息:
'Seq.Group' 不是有效名称。确保它不包含无效字符或标点符号,并且不要太长。
不幸的是,我无法修改视图的结构,因为它是另一个产品的一部分,所以我坚持使用字段名称的方式。我可以使用无标点符号的字段名称添加自己的视图,但我真的宁愿根本不修改 SQL Server,因为那样每次升级、修补程序等时,这都会成为另一个维护点。有谁知道更好的解决方法?
sql - INSERT 语句后的@@IDENTITY 总是返回 0
我需要一个在数据库上执行 INSERT 语句并返回 Auto_Increment 主键的函数。我有以下 C# 代码,但是,虽然 INSERT 语句工作正常(我可以看到数据库中的记录,PK 生成正确并且行 == 1),但 id 值始终为 0。关于可能发生的任何想法错误的?
为了回应答案,我尝试了:
但我现在收到错误“SQL 语句结束后找到的字符”
我正在使用带有 OleDb 连接的 MS Access 数据库,Provider=Microsoft.Jet.OLEDB.4.0
c# - 如何通过 OleDb 确定 MS Access 字段大小
现有应用程序使用 C#。在启动期间,应用程序调用一个虚拟方法来对数据库进行更改(例如,新修订可能需要计算新字段或其他内容)。打开的 OleDb 连接被传递到该方法中。
我需要更改字段宽度。ALTER TABLE 语句工作正常。但是如果字段已经是适当的大小,我想避免执行 ALTER TABLE 语句。有没有办法使用相同的 OleDb 连接来确定 MS Access 字段的大小?
c# - System.Data.OleDb.OleDbException:互联网地址无效。如何使用 OleDb 连接到位于网络服务器上的 excel 文件
我正在尝试创建与位于 SharePoint 服务器上的 Excel 文件的 OleDb 连接。我目前正在使用的示例代码引发 OleDb 异常“无效的 Internet 地址”:
有人知道如何连接到网络服务器上的 Excel 电子表格吗?
更新
Microsoft 支持已回复我并同意无法连接到位于 Web 服务器上的 Excel 文件。Jet .40 和 news ACE(Access Connectivity Engine)都不支持这种操作模式。他们引用了知识库文章“在 Access 2000、Access 2002、Access 2003 和 Access 2007 中,FTP 或 HTTP 服务器帮助主题上的导入/链接数据不正确”
.net - 从 .NET 向 Access (Jet) 表添加列
我们的应用程序(已部署)正在使用 Access/Jet 数据库。我们软件的即将发布的版本需要在其中一个表中添加一些额外的列。我需要先检查这些列是否存在,如果不存在则添加它们。
有人可以提供一个快速的代码示例、链接或朝着正确的方向轻推吗?
(我使用的是 c#,但 VB.NET 示例也可以)。
ms-access - Jet(Access) DB 和基于表达式的列?
我偶尔会在一个旧项目上工作,它使用经典的 asp 作为前端,使用 access 数据库作为后端。
我想在其中一个表中创建一个新列,其中包含从行中的其他列计算其值的逻辑。
我知道如何在更现代的 DBMS 中做到这一点,但我认为访问不支持它。请记住,我没有使用访问前端,只是通过 ODBC 使用 Jet DB 引擎。
任何指针?
sql - 在 ACCESS 中添加一个具有默认值的字段
我想使用 Visual C++ 代码插入一个具有默认值的新字段。我写了这个:
但这是不正确的。我该怎么做呢?你们中的某个人可以给我写正确的代码吗?
odbc - x64 OS下使用C#查询Jet Databases/Excel文件
因此,我了解到用于查询 Microsoft Access MDB 文件和 Excel 电子表格等数据源的Microsoft.Jet.OLEDB.4.0数据提供程序在 Windows 64 位操作系统下不起作用。
我现在应该使用什么来查询 .NET 3.5 (C#) 应用程序中的这些文件类型,以确保在 x86 和 x64 环境中的兼容性?我已经搜索了互联网,但似乎无法找到关于如何处理这种不兼容性的直接答案。
我还尝试过使用 ODBC 提供程序和 MSDASQL 提供程序,但没有成功,因为它们似乎会抛出与 Microsoft.JET.OLEDB.4.0 提供程序在 x64 环境中使用时相同的异常(除非我在做一些公然错误的事情)这两个提供程序,即使它们在我的 Windows XP x86 环境下运行良好)。
我发现有人说我需要在 x64 系统中使用%WINDIR%\System32\odbcad32.exe进行 ODBC 连接,但我知道如何使用它。
在 x64 下抛出的示例异常:
************** 异常文本 ************** System.InvalidOperationException:“Microsoft.Jet.OLEDB.4.0”提供程序未在本地机器。在 System.Data.OleDb.OleDbServicesWrapper.GetDataSource(OleDbConnectionString constr, DataSourceWrapper& datasrcWrapper) 在 System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection) 在 System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo、DbConnectionPool 池、DbConnection owningObject)