Visual Studio 2012使用外部DataBase发布项目c#

时间:2017-07-15 14:36:52

标签: c# sql sql-server publish

我需要你的帮助人员如何正确发布我在Visual Studio上创建的项目。

这是我的项目在我的本地计算机(以及发布文件)上成功运行的事情,但是当我尝试运行它时(为了测试目的,我接收到由于sql连接而导致的错误消息)。 我的应用程序通过连接字符串连接到Sql Database(数据源= HP-PC \ SQLEXPRESS;初始目录=库存;集成安全性= True)。

我使用Sql Manager处理数据库,这是我尝试将应用程序运行到另一台计算机时收到的一些错误:

System.Data.SqlClient.SqlException (0x80131904): Παρουσιάστηκε ένα σφάλμα δικτύου ή ένα σφάλμα που αφορά μια συγκεκριμένη παρουσία κατά τη δημιουργία μιας σύνδεσης σε SQL Server. Δεν ήταν δυνατή η εύρεση του διακομιστή ή ο διακομιστής δεν ήταν προσβάσιμος. Βεβαιωθείτε ότι το όνομα παρουσίας είναι σωστό και ότι ο SQL Server έχει ρυθμιστεί ώστε να επιτρέπει τις απομακρυσμένες συνδέσεις. (provider: SQL Network Interfaces, error: 26 - Προσδιορίστηκε σφάλμα εντοπισμού διακομιστή/περιόδου λειτουργίας)
   σε System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
   σε System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, 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, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
   σε System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
   σε System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
   σε System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   σε System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   σε System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
   σε System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
   σε System.Data.SqlClient.SqlConnection.Open()
   σε System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
Error Number:-1,State:0,Class:2

我理解我的发布选项根本不包含db。

如何使用外部数据库正确发布项目?或者最好将我的数据库包含在项目中?

2 个答案:

答案 0 :(得分:0)

英文错误(使用Google翻译)是:

  

创建与SQL Server的连接时出现网络错误或特定实例错误。找不到服务器或服务器无法访问。确保实例名称正确并且SQL Server配置为允许远程连接。 (提供程序:SQL网络接口,错误:26 - 服务器/会话检测错误)

这意味着您的应用程序无法连接到SQL Server。首先要检查的是:

您是否可以从部署应用程序的计算机上手动连接到SQL Server?

SQL Server可能未配置为接受来自远程计算机的连接。

有一篇很好的文章介绍了解决连接问题的逐步方法:

https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/troubleshoot-connecting-to-the-sql-server-database-engine

答案 1 :(得分:0)

大家好经过大量的搜索和测试,我找到了解决问题的最佳解决方案,我想与大家分享。 那么问题是服务器名称,因为(我没有任何用户名或密码),所以在我的代码中,我只需更改连接字符串上的单个值

"Data Source= HP-PC\\SQLEXPRESS;Initial Catalog=Stock;Integrated Security=True"

string hostName = System.Net.Dns.GetHostName();

"Data Source= '"+hostname+'"\\SQLEXPRESS;Initial Catalog=Stock;Integrated Security=True"

现在一切都很好我可以将我的应用程序测试到任何计算机!!!!

谢谢你们的时间和帮助,

友好的问候, 吉姆