在运行时C#SQL Server没有将对象引用设置为对象的实例?

时间:2016-05-18 17:59:49

标签: c# .net sql-server ssms

我在C#中构建了一个应用程序。我打算使用安装盾创建一个msi安装程序文件。当我尝试在其他地方安装它时,应用程序在我的PC上安装并运行正常,这给我一个错误的错误

  

“对象引用未在运行时设置为对象的实例。”

为了清楚起见,我想解释第一个表格是登录表格。 应用程序在我的本机PC上运行意味着它是运行良好的应用程序。但我不知道为什么会造成这么多麻烦。

连接字符串是:

<connectionStrings>
        <add name="ConString" connectionString="Data Source=(LocalDB)\v11.0;Initial Catalog=test; AttachDBFileName=D:\test.mdf; Integrated Security=True"
            providerName="System.Data.SqlClient" />
</connectionStrings>

为了方便起见,我还没有添加任何用户名和密码。 我多次尝试将附件DBFILENAME的目的地更改为|DataDirectory|test.mdf ...等,但是在客户端PC上也没有用。 这是否意味着我必须安装SSMS(SQL Server Management Studio)?这是我没有在客户端PC上安装的唯一东西。

2 个答案:

答案 0 :(得分:1)

您可以尝试以下任一方法:

  • SQL Server数据库必须安装在客户端计算机的某个位置,以便只有在应用程序中附加(test.mdf)时,您的应用程序才能访问它。

    < / LI>
  • 或者,您只需在服务器计算机上安装SQL Server,就不必每次都在每台客户端计算机上安装SQL Server和您的应用程序。

答案 1 :(得分:0)

如果您需要单个用户数据库,则需要确保在目标计算机上安装了sql express。否则你需要一个服务器指向。

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/f21c0728-935d-492a-baaf-ff2704e3683b/attachdbfilename-option-in-connection-string?forum=sqldataaccess

  

AttachDBFilename是SQL Express独有的,它会旋转用户实例   SQL Express附加到单个用户的特定DB文件名   模式。数据库只是要使用的数据库的名称,它没有   额外的内涵。对于任何生产服务器,您最需要   可能没有使用AttachDBFilename。它非常有用   单用户模式下的开发和实验。

     

您必须在生产服务器上更改数据源=。\ SQLEXPRESS   因为它没有运行SQL Express的命名实例。   服务器名称的语法是\。请注意一个空白    等同于默认实例。在你的情况下,网络   服务器正在运行SQL Server的默认实例。选项   不过,在SQLEXPRESS中也可以安装默认实例   您必须明确选择它,否则它将作为命名安装   名为SQLEXPRESS的实例。你可以使用(本地)或   localhost或。或者代替服务器上的IP,所以   只要你没有指定缺席的实例名称。