【发布时间】: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