我在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上安装的唯一东西。
答案 0 :(得分:1)
您可以尝试以下任一方法:
SQL Server数据库必须安装在客户端计算机的某个位置,以便只有在应用程序中附加(test.mdf)
时,您的应用程序才能访问它。
或者,您只需在服务器计算机上安装SQL Server,就不必每次都在每台客户端计算机上安装SQL Server和您的应用程序。
答案 1 :(得分:0)
如果您需要单个用户数据库,则需要确保在目标计算机上安装了sql express。否则你需要一个服务器指向。
AttachDBFilename是SQL Express独有的,它会旋转用户实例 SQL Express附加到单个用户的特定DB文件名 模式。数据库只是要使用的数据库的名称,它没有 额外的内涵。对于任何生产服务器,您最需要 可能没有使用AttachDBFilename。它非常有用 单用户模式下的开发和实验。
您必须在生产服务器上更改数据源=。\ SQLEXPRESS 因为它没有运行SQL Express的命名实例。 服务器名称的语法是\。请注意一个空白 等同于默认实例。在你的情况下,网络 服务器正在运行SQL Server的默认实例。选项 不过,在SQLEXPRESS中也可以安装默认实例 您必须明确选择它,否则它将作为命名安装 名为SQLEXPRESS的实例。你可以使用(本地)或 localhost或。或者代替服务器上的IP,所以 只要你没有指定缺席的实例名称。