【问题标题】:Classic ASP connecting to localdb for SQL Server经典 ASP 连接到 SQL Server 的 localdb
【发布时间】:2016-07-19 20:57:12
【问题描述】:

谁能解释一下为什么会这样

Conn.Open "Provider=SQLOLEDB;Server=tcp:myazurename.database.windows.net;Database=People;Uid=MyUid;Pwd=MyPwd;Encrypt=yes;"

这不是

Conn.Open "Provider=SQLOLEDB;Server=(localdb)\v11.0;Database=People;Uid=MyUid;Pwd=MyPwd;Encrypt=yes;"

我在本地复制了我的 live azure 数据库以在 Classic ASP 中进行开发工作,错误消息是

用于 SQL Server 的 Microsoft OLE DB 提供程序错误“80004005”
[DBNETLIB][ConnectionOpen (Connect())。] SQL Server 不存在或访问被拒绝。

Azure SQL 服务器版本:11.0.9231 本地 SQL 服务器版本:11.0.2318

我可以在 SQL Server Management Studio 上使用相同的详细信息进行连接,因此它不是用户权限问题...

在服务器的安全性下,用户具有公共服务器角色,“人”数据库​​的用户映射是除 db_denydatareader 和 db_denydatawriter 之外的所有内容。

我也尝试过 (localdb)\\v11.0,但没有任何区别。

有什么想法吗?

【问题讨论】:

  • (localdb)\v11.0 看起来不像服务器/本地计算机名称,您确定这是您的实例吗?如果是 SQL Server Express,预计会出现 MACHINENAME\INSTANCENAME 之类的东西,它会是 MACHINENAME\SQLEXPRESS
  • Aw..您使用localDB Automatic instance,这可能是问题所在。 “与 LocalDB 的第一个连接将创建并启动实例,这需要一些时间并且可能会导致连接超时失败。如果发生这种情况,请稍等片刻,然后重新连接。” 我认为 ADODB 不支持它,实际上它会尝试为您创建一个新的数据库实例。
  • 事实上您不太可能看到SQLOLEDB 的任何用法,尤其是对于 SQL Server 2012,您应该使用 SQL Server Native Client。见SQL Server Native Client 11.0 OLE DB Provider connection strings
  • 你在安装什么?只需将连接字符串更改为我发送给您的链接之一并使用正确格式的Server 属性。如果您已经安装了 SQL Server Express,则默认实例名为 SQLEXPRESS,否则它是 SQL Server 的非 Express 版本,那么它将在计算机上安装默认实例,因此只需使用 MACHINENAME
  • 好的,所以我相信答案如下:它不喜欢 (LocalDb)\V11.0 它想要一个正确的实例名称,就像你首先说的那样。我正在使用的 MACHINENAME\INSTANCENAME 或 localhost\INSTANCENAME 因为这将被复制给其他开发人员。此外,您不需要两个反斜杠!我的问题是我不知何故没有安装本地实例。谢谢或您的帮助@Lankymart

标签: asp-classic connection-string legacy-code


【解决方案1】:

好的,所以我相信答案如下:它不喜欢 (LocalDb)\V11.0 它想要一个正确的实例名称,就像你一开始说的那样。我正在使用的 MACHINENAME\INSTANCENAME 或 localhost\INSTANCENAME 因为这将被复制给其他开发人员。此外,您不需要两个反斜杠!我的问题是我不知何故没有安装本地实例。感谢或您的帮助@Lankymart

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多