【问题标题】:How to make ConnectionString work on client computer?如何使 ConnectionString 在客户端计算机上工作?
【发布时间】: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,但它不起作用。

有什么问题?

【问题讨论】:

标签: c# sql sql-server visual-studio


【解决方案1】:

默认情况下,如果您在安装过程中不更改任何设置,SQL Server Express 实例将获得 SQLEXPRESS 实例名称 - 请尝试以下操作:

Data Source=.\SQLEXPRESS;Integrated Security=True;User Instance=True;AttachDBFilename=|DataDirectory|gym.mdf

(不是SQLEXPRESS01 - 那是不是标准)

【讨论】:

  • 它给了我另一个消息“由于启动用户实例进程失败,无法生成sql server的用户实例,连接将被关闭”如何解决?
  • 如果我是你——我会停止使用AttachDbFileNameUser 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;";

【讨论】:

    猜你喜欢
    • 2012-12-12
    • 1970-01-01
    • 2021-11-24
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    相关资源
    最近更新 更多