Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以exe运行时无法读取本地SQL Server文件。在IDE中工作_C#_Sql Server - Fatal编程技术网

C# 以exe运行时无法读取本地SQL Server文件。在IDE中工作

C# 以exe运行时无法读取本地SQL Server文件。在IDE中工作,c#,sql-server,C#,Sql Server,这是我第一次尝试使用SQL Server文件类型数据库。当我在IDE中运行时,它可以工作,但是当我双击exe或右键单击“RunHighted”时,我在尝试连接时出错 在两种模式下运行时,消息框显示相同的连接字符串 可能是什么问题?某种权限问题 MessageBox.Show(ApplicationParameter.LocalDatabaseConnectionString); databaseConnection = new SqlConnection(ApplicationParameter

这是我第一次尝试使用SQL Server文件类型数据库。当我在IDE中运行时,它可以工作,但是当我双击exe或右键单击“RunHighted”时,我在尝试连接时出错

在两种模式下运行时,消息框显示相同的连接字符串

可能是什么问题?某种权限问题

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();