如何使 ConnectionString 在客户端计算机上工作?
Posted
技术标签:
【中文标题】如何使 ConnectionString 在客户端计算机上工作?【英文标题】:How to make ConnectionString work on client computer? 【发布时间】:2021-01-14 01:44:33 【问题描述】:我在 Visual Studio 中为管理系统创建了一个设置,并使用了 Microsoft SQL Server 数据库文件,但是当我在用户计算机或另一台计算机上使用它时,当我尝试连接到数据库时收到此消息.有什么问题?
我使用的是 SQL Server 2017 Express。
我的连接字符串可以在客户的 PC 上工作:
@"Data Source=.\SQLEXPRESS01;Integrated Security=True;User Instance=True;AttachDBFilename=|DataDirectory|gym.mdf";
我在客户端计算机上安装了 SQL Server 2017 Express,但它不起作用。
有什么问题?
【问题讨论】:
这能回答你的问题吗? Why am I getting “Cannot Connect to Server - A network-related or instance-specific error”?Integrated Security=True
表示以当前用户身份建立连接 - 但该用户在您的数据库的特定副本中是否已知?
@hassan,有更新吗?如果您的问题已经解决,您可以点击“✔”将相应的回复标记为答案。
【参考方案1】:
默认情况下,如果您在安装过程中不更改任何设置,SQL Server Express 实例将获得 SQLEXPRESS
实例名称 - 请尝试以下操作:
Data Source=.\SQLEXPRESS;Integrated Security=True;User Instance=True;AttachDBFilename=|DataDirectory|gym.mdf
(不是SQLEXPRESS01
- 那是不是标准)
【讨论】:
它给了我另一个消息“由于启动用户实例进程失败,无法生成sql server的用户实例,连接将被关闭”如何解决? 如果我是你——我会停止使用AttachDbFileName
和User Instance
的东西——那不过是悲伤。相反:启动 SSMS,并将您的 .mdf
附加到 SQL Server Express 实例 - 然后使用逻辑数据库名称引用它 - 类似于 Data Source=.\SQLEXPRESS;Integrated Security=True;database=gym
并完成它
我做到了,我更改了字符串连接,我复制了 gym.mdf 并将其粘贴到另一台计算机到 sqlexpress 的数据中,并向我显示“无法打开登录请求的数据库“gym” , 登录失败, 用户 'lab-khaled\khaled' 登录失败。如果我问的太多,我很抱歉,但我真的需要让它工作,谢谢你顺便说一句【参考方案2】:
你得到的错误意味着服务器不正确。
首先,您可以尝试以下代码来安装ServerName和instanceName。
var instances = SqlDataSourceEnumerator.Instance.GetDataSources();
foreach (DataRow instance in instances.AsEnumerable())
Console.WriteLine(instance["ServerName"]);
Console.WriteLine(instance["InstanceName"]);
其次,可以使用下面的connectionstring来连接db文件。
string connstr = @"Data Source=server\\instance;
AttachDbFilename=D:\Product.mdf;
Integrated Security=True;
Connect Timeout=2;";
【讨论】:
以上是关于如何使 ConnectionString 在客户端计算机上工作?的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式为 ActiveDirectoryMembershipProvider 设置 connectionString
是否可以(以及如何)在 C# 运行时将 ConnectionString 添加到 app.config?
如何在(App.config)connectionString 中使用应用程序数据