【问题标题】:Extended Stored Procedure with ODBC DSN带有 ODBC DSN 的扩展存储过程
【发布时间】:2009-08-07 23:16:33
【问题描述】:

我有一个扩展存储过程(用 Delphi 编写,如果有什么不同的话),它通过 ODBC 建立自己的连接并执行一些处理 - 仅使用 T-SQL 无法完成的事情。

如果我尝试使用设置的系统 DSN(例如名为 MyDataSource)进行连接,xp 会返回以下错误:

[Microsoft][ODBC SQL Server Driver][SQL Server] 无法打开登录“MyDataSource”中请求的数据库。登录失败。

但是,如果我使用连接字符串 (SERVER=MyServerName;DATABASE=MyDatabaseName;etc) 进行连接,那么它会连接并且 xp 可以正常工作。

我在 xp 之外测试了代码,只是一个 Windows 应用程序,并且使用 DSN 的连接工作正常。我希望这与我连接数据库 10 年的方式相同!

所以我让它工作了,但我真的很想知道为什么它不能使用 DSN。我也尝试过使用用户 DSN,但没有区别。

有什么想法吗?谢谢。

【问题讨论】:

  • 最新的是,这根本不适用于 SQL Server 2000。在 SQL Server 2008 上,这确实有效,但我不知道我的 xp 连接到哪个数据库。它当然不是 ODBC DSN 指向的数据库,也不是用户的默认数据库。

标签: sql-server stored-procedures odbc dsn


【解决方案1】:

请记住,执行扩展存储过程时,它是在 SQL Server 服务使用的登录名下运行的。如果该 SQL 服务器中的登录没有网络权限,则会发生拒绝错误。我希望这会有所帮助。

【讨论】:

  • 好的,谢谢,这可能有用。该用户实际上是 SQL Server 用户,而不是 Windows 用户。如果 ODBC DSN 是用户 DSN,我可以理解这可能会影响某些事情,但它是系统 DSN 并且都发生在同一台服务器上。
  • 看到你是唯一一个可以回答的人,即使它没有帮助,我也会接受这个。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-12
  • 2020-05-19
  • 2023-04-07
  • 2021-12-16
  • 2011-02-21
相关资源
最近更新 更多