为C#应用程序进行设置时,如何解决连接字符串问题? (从Sql到Express)

时间:2019-06-26 19:21:23

标签: c# sql sql-server-express

我用C#和Microsoft SQL Server 2017编写了一个程序,它的工作没有任何问题...

但是当我想为此应用创建安装文件并创建数据库的Express实例时,连接字符串出现问题。

我将数据库文件复制到调试文件夹中,并更改了app.exe.config连接字符串,但出现错误。

我的程序有5层和4个配置文件,其中多少个需要更改连接字符串部分?

我尝试使用此连接字符串而不是原始连接字符串,首先尝试在debug文件夹中查找配置文件及其提供错误,然后再次尝试所有配置文件及其make错误

<add name="AccountingDBEntities" 
     connectionString="metadata=res://*/AccountingModel.csdl|res://*/AccountingModel.ssdl|res://*/AccountingModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\AccountingDB.MDF;integrated security=True;MultipleActiveResultSets=True&quot;" 
     providerName="System.Data.EntityClient" />

错误:

  您的应用程序中发生了

未处理的异常。如果单击“继续”,则应用程序将忽略此错误并尝试继续,如果单击“退出”,则应用程序将立即关闭。

一些细节:

  

有关调用的详细信息,请参阅此消息的末尾   即时(JIT)调试,而不是此对话框。

     

**************例外文本**************

     

System.Data.Entity.Core.EntityException:基础提供程序在打开时失败。 ---> System.Data.SqlClient.SqlException:无法打开物理文件“ E:\ Projects \ Programming Project \ C#\ Accounting1.0 \ UI \ bin \ Debug \ AccountingDB.MDF”。操作系统错误5:“ 5(访问被拒绝。)”。

     

尝试为文件E:\ Projects \ Programming Project \ C#\ Accounting1.0 \ UI \ bin \ Debug \ AccountingDB.MDF附加自动命名的数据库失败。存在具有相同名称的数据库,或者无法打开指定的文件,或者该文件位于UNC共享上。

     在System.Data.SqlClient.SqlInternalConnectionTds..ctor中的

,SqlAuthenticationProviderManager sqlAuthProviderManager)      在System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions选项,DbConnectionPoolKey poolKey,对象poolGroupProviderInfo,DbConnectionPool池,DbConnection owningConnection,DbConnectionOptions userOptions)      在System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool池,DbConnection owningObject,DbConnectionOptions选项,DbConnectionPoolKey poolKey,DbConnectionOptions userOptions)      在System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject,DbConnectionOptions userOptions,DbConnectionInternal oldConnection)      在System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject,DbConnectionOptions userOptions,DbConnectionInternal oldConnection)      在System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject,UInt32 waitForMultipleObjectsTimeout,布尔值allowCreate,仅布尔值OneCheckConnection,DbConnectionOptions userOptions,DbConnectionInternal&连接)      在System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject,TaskCompletionSource 1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource 1重试,DbConnectionOptions userOptions,DbConnectionInternal oldConnection,DbConnectionInternal&连接)处      在System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal处(DbConnection externalConnection,DbConnectionFactory connectionFactory,TaskCompletionSource 1 retry, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource 1重试,DbConnectionOptions userOptions)      在System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource 1 retry) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource 1重试)      在System.Data.SqlClient.SqlConnection.Open()      在System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.b__36(DbConnection t,DbConnectionInterceptionContext c)      执行System.Data.Entity.Infrastructure.Interception.InternalDispatcher 1.Dispatch[TTarget,TInterceptionContext](TTarget target, Action 2操作,执行TInterceptionContext拦截上下文,执行Action 3 executing, Action 3)      在System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.Open(DbConnection连接,DbInterceptionContext拦截上下文)      在System.Data.Entity.Core.EntityClient.EntityConnection.b__2()      在System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy。<> c__DisplayClass1.b__0()      在System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute [TResult](Func 1 operation) at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Action operation) at System.Data.Entity.Core.EntityClient.EntityConnection.Open() --- End of inner exception stack trace --- at System.Data.Entity.Core.EntityClient.EntityConnection.Open() at System.Data.Entity.Core.Objects.ObjectContext.EnsureConnection(Boolean shouldMonitorTransactions) at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func 1函数,IDbExecutionStrategy执行策略,布尔值startLocalTransaction,布尔值releaseConnectionOnSuccess)处      在System.Data.Entity.Core.Objects.ObjectQuery 1.<>c__DisplayClass7.<GetResults>b__5() at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func 1操作中)      在System.Data.Entity.Core.Objects.ObjectQuery 1.GetResults(Nullable 1 forMergeOption处)      在System.Data.Entity.Core.Objects.ObjectQuery 1.<System.Collections.Generic.IEnumerable<T>.GetEnumerator>b__0() at System.Data.Entity.Internal.LazyEnumerator 1.MoveNext()

0 个答案:

没有答案