C# 以exe运行时无法读取本地SQL Server文件。在IDE中工作
这是我第一次尝试使用SQL Server文件类型数据库。当我在IDE中运行时,它可以工作,但是当我双击exe或右键单击“RunHighted”时,我在尝试连接时出错 在两种模式下运行时,消息框显示相同的连接字符串 可能是什么问题?某种权限问题C# 以exe运行时无法读取本地SQL Server文件。在IDE中工作,c#,sql-server,C#,Sql Server,这是我第一次尝试使用SQL Server文件类型数据库。当我在IDE中运行时,它可以工作,但是当我双击exe或右键单击“RunHighted”时,我在尝试连接时出错 在两种模式下运行时,消息框显示相同的连接字符串 可能是什么问题?某种权限问题 MessageBox.Show(ApplicationParameter.LocalDatabaseConnectionString); databaseConnection = new SqlConnection(ApplicationParameter
MessageBox.Show(ApplicationParameter.LocalDatabaseConnectionString);
databaseConnection = new SqlConnection(ApplicationParameter.LocalDatabaseConnectionString);
databaseConnection.Open();
我得到以下SqlException:
建立与SQL Server的连接时发生与网络相关或特定于实例的错误。找不到服务器或无法访问服务器。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。(提供程序:SQL网络接口,错误:50-发生本地数据库运行时错误。在LocalDB实例启动期间发生错误:SQL Server进程无法启动
以下是app.config文件中的connectionstring:
<connectionStrings>
<add name="LocalDatabase" connectionString="Data Source=(localdb)\v11.0;Initial Catalog=C:\MYCODE\MyCompany.DISKMONITOR\MyCompany.DISKMONITOR\DATA\DATABASE.MDF;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False"/>
</connectionStrings>
更新:
我以管理员身份运行,得到了相同的结果。Connections.Classified包含特定于数据库位置的信息、要使用的实例以及用户名/密码信息。将不会发布 这是我在所有应用程序中使用的SQLConnections.cs类(我的是oracle,我刚刚将其更新为使用SQL): 在扩展Connections.SQLConnections的repo类中使用:
SQLConnection connection = getConnection();
大大减少了混乱,让其他人更容易阅读您的代码。异常消息和异常类型是什么?路径中是否应该有
..\MyCompany.DISKMONITOR\MyCompany.DISKMONITOR\…
?请刷新更新的问题。您的exe运行在哪个帐户下?如果从VS IDE运行,则exe为在管理员权限下运行。@ChadD您是说Sql Server Compact Edition吗?没有Sql Server的文件版本。Compact Edition是最接近的版本,它的工作方式确实符合您的需要。但是,Compact Edition使用的是*.sdf文件,而不是*.mdf文件,并且您的连接字符串用于完整的Sql Server版本。Sql Server的Express Editionver仍然是完整的服务器。请注意,我的conenction字符串指定Integrated Security=True“因此不需要用户代码密码。同样,我使用的是基于文件的数据库,而不是通常的SQL server实例,在该实例中,您可以指定服务器名称或(本地)。可能我误解了什么是基于文件的数据库,或者混淆了uit与紧凑型数据库。我原以为这是使用需要服务的完整实例的另一种选择。是的,这很奇怪,如果它在测试中起作用,在发布时也应该起作用。这就是为什么我问数据库是否在项目中,并将其设置为Copy I如果是较新版本,则允许数据库与项目一起发布。我必须对图像和其他资源执行此操作。我将mdf放置在应用程序的子文件夹中,但没有将其包含在项目中。当我这样做时,我可以选择“复制较新版本”"。但是,现在我正在努力创建一个单击一次的包。我本来希望我可以双击exe并放弃部署,因为这是一个只有我才能运行的程序。我不清楚匹配mdf和指定服务器之间的区别。也许我不希望使用Compact db依赖于正在安装的SQL Server
private String connectionString = "Server=" + SERVER + "\\" + INSTANCE + ";Database=" + DATABASE + ";User Id="+ USER + ";Password=" + PASSWORD + ";"
protected SQLConnection getConnection()
{
return new SQLConnection(connectionString);
}
SQLConnection connection = getConnection();