I'm trying to connect derby database with C# application through IBM DB2.
At first I've installed IBM Data Server Driver Package, which, according to the documentation given in the following url as
http://www.ibm.com/developerworks/data/library/techarticle/dm-0410ng/index.html.
Then I installed IBM Data Server Client, which has this dll in "bin" directory, which I added to system path. and followed every steps as per that document
but i am getting error as
{System.Data.Odbc.OdbcException (0x80131937): ERROR [08001] [IBM][CLI Driver] SQL30081N A communication error has been detected. Communication protocol being used: "TCP/IP". Communication API being used: "SOCKETS". Location where the error was detected: "xx.xx.xx.xx". Communication function detecting the error: "selectForRecvTimeout". Protocol specific error code(s): "0", "*", "*". SQLSTATE=08001
and error stack trace as
at System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode)
at System.Data.Odbc.OdbcConnectionHandle..ctor(OdbcConnection connection, OdbcConnectionString constr, OdbcEnvironmentHandle environmentHandle)
at System.Data.Odbc.OdbcConnectionOpen..ctor(OdbcConnection outerConnection, OdbcConnectionString connectionOptions)
at System.Data.Odbc.OdbcConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.Odbc.OdbcConnection.Open()
waiting for your valuable responses and comments!!!!!!!!.
Uhm, you realize that the DeveloperWorks article you reference is 10 years old, right? That version of the IBM ADO.Net software was only able to access very old versions of the Derby database, versions 10.0 through 10.2 I believe.
You don't mention what version of Derby you're trying to run, but unless it is a VERY old version you're not going to be able to use this technique.
Related
I am try to connect Azure Cloud Sql Database from my local machine through SQL Server Management Studio (SSMS) 2017/18.In Server Firewall Rule added client IP,but Not getting connected and throwing error as below.
===================================
Cannot connect to integtenantelasticsql.database.windows.net.
===================================
A network-related or instance-specific error occurred while
establishing a connection to SQL Server. The server was not found or
was not accessible. Verify that the instance name is correct and that
SQL Server is configured to allow remote connections. (provider: TCP
Provider, error: 0 - A connection attempt failed because the connected
party did not properly respond after a period of time, or established
connection failed because connected host has failed to respond.) (.Net
SqlClient Data Provider)
------------------------------ For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&EvtSrc=MSSQLServer&EvtID=10060&LinkId=20476
------------------------------ Error Number: 10060 Severity: 20 State: 0
------------------------------ Program Location:
at
System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity
identity, SqlConnectionString connectionOptions, SqlCredential
credential, Object providerInfo, String newPassword, SecureString
newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString
userConnectionOptions, SessionData reconnectSessionData,
DbConnectionPool pool, String accessToken, Boolean
applyTransientFaultHandling, SqlAuthenticationProviderManager
sqlAuthProviderManager) at
System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions
options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo,
DbConnectionPool pool, DbConnection owningConnection,
DbConnectionOptions userOptions) at
System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection
owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions
userOptions) at
System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection
owningConnection, TaskCompletionSource1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource1 retry, DbConnectionOptions userOptions) at
System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection
outerConnection, DbConnectionFactory connectionFactory,
TaskCompletionSource1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource1
retry) at
System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1
retry) at System.Data.SqlClient.SqlConnection.Open() at
Microsoft.SqlServer.Management.SqlStudio.Explorer.ObjectExplorerService.ValidateConnection(UIConnectionInfo
ci, IServerType server) at
Microsoft.SqlServer.Management.UI.ConnectionDlg.Connector.ConnectionThreadUser()
===================================
A connection attempt failed because the connected party did not
properly respond after a period of time, or established connection
failed because connected host has failed to respond
Also performed the following Operations:
-Network reset
-IPV4 and IPV6 DNS server address update.
-SQL Server Configuration Manager IPV4 TCP enable disable
-SQL Server services stop, start.
-System windows 10 64bit up to date.
-Network driver uninstall installation.
-Telnet
Telnet cmd: telnet integtenantelasticsql.database.windows.net. 443
working.
-C# sql client:
I have tried sample console app using c# Sql client, but getting the same issue.
Not getting what is the issue? Help is very much appreciate.
Could you please suggest me the solution.
Thanks in advance.
There was a problem with TCP port 1433 not there in my system firewall Inbound setting.
So have did the following steps
-Enabling protocols for port 1433
-Create a Firewall exception
-And Apply to the Database Engine Instance Service
for more details reference link here.
After follow the same reference link problem got solved.
This question already has answers here:
Cannot Connect to Server - A network-related or instance-specific error
(54 answers)
Closed 3 years ago.
Problem: I'm trying to create a login form using built-in (drag and drop) form controls in Visual Studio 2019. It's my first time using these controls as opposed to working with php and switched over for the sake of efficiency. So, I am attached to the idea of using the built-in method for login controls if at all possible.
My project is an ASP.NET Web Application (.NET Framework). I have a separate remote Microsoft SQL Server running and attached via the server explorer as well as a connection string in the web.config file as follows:
<add name="NAME"
connectionString ="Data Source=COMPUTERNAME;Initial Catalog=CATNAME;User ID=tj;Password=Password"
providerName="System.Data.SqlClient"/>
However, this does not help the main issue which is: how do make the login form I have created communicate with my remote SQL Server?
After reading through the stack trace and doing some research, I can conclude that I get the errors below [Results of stack trace] because of the fact that my project is not located in the "My Documents/Visual Studio 2019/..." directory and Visual studio itself is trying to access the actual directory, which it has no READ/WRITE privileges over (even though I tried manually adding those privileges myself), but anyway... Visual Studio would normally add the App_Data directory as well as a built-in database (not ideal) within it which would work with the built-in login controls as is. Instead VS is trying to access a place that it can't along with a database that doesn't exist. I have exhausted the options I know of and have no idea what to try next. I know there are many tutorials out there that cover the general topic, but they do not help my underlying issue or benefit me or my situation any which way since they do not go in depth on everything that can co wrong with a project or unique circumstances such as mine.
Also, the SQL Server is fine. It's been tested in several different ways and is accessible from Visual Studio.
Sources:
(Sorry, did some research before I decided to post, so I lost track of most of my sources)
Initial Tutorial:
https://www.youtube.com/watch?v=Sq_0WrK6odY
Troubleshooting:
how to connect web form with sql server running on an other computer in asp.net
How to connect an asp.net web app to SQL Server
ASP.NET web forms Login control SQL Server data binding?
- https://www.connectionstrings.com/store-connection-string-in-webconfig/
Results of stack trace:
[SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)]
System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling, SqlAuthenticationProviderManager sqlAuthProviderManager) +947
System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) +6024351
System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions) +38
System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) +531
System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource1 retry, DbConnectionOptions userOptions) +156
System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource1 retry, DbConnectionOptions userOptions) +22
System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource1 retry) +92
System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) +219
System.Data.SqlClient.SqlConnection.Open() +101
System.Web.Management.SqlServices.GetSqlConnection(String server, String user, String password, Boolean trusted, String connectionString) +78
[HttpException (0x80004005): Unable to connect to SQL Server database.]
System.Web.Management.SqlServices.GetSqlConnection(String server, String user, String password, Boolean trusted, String connectionString) +131
System.Web.Management.SqlServices.SetupApplicationServices(String server, String user, String password, Boolean trusted, String connectionString, String database, String dbFileName, SqlFeatures features, Boolean install) +92
System.Web.Management.SqlServices.Install(String database, String dbFileName, String connectionString) +30
System.Web.DataAccess.SqlConnectionHelper.CreateMdfFile(String fullFileName, String dataDir, String connectionString) +410`
As your error stated that your connection between your application and sql server is not successful, and further looking into your connection string as stated below
<add name="AnyName" connectionString ="Data Source="ComputerName";Initial Catalog=DBNAME;User ID=tj;Password=Password" providerName="System.Data.SqlClient"/>
In your "Data Source" section SQL Instance is missing like
"Data Source=ComputerName/SqlInstance"
I have an issue with my ASP.NET MVC4 application when I publish it to Azure. The roleManager part is not working and the application returns an error when it reaches to this code in my view:
bool isAdmin = User.IsInRole("admin");
And the error is the following:
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
SQLExpress database file auto-creation error:
The connection string specifies a local Sql Server Express instance using a database location within the application's App_Data directory. The provider attempted to automatically create the application services database because the provider determined that the database does not exist. The following configuration requirements are necessary to successfully check for existence of the application services database and automatically create the application services database:
If the application is running on either Windows 7 or Windows Server 2008R2, special configuration steps are necessary to enable automatic creation of the provider database. Additional information is available at: http://go.microsoft.com/fwlink/?LinkId=160102. If the application's App_Data directory does not already exist, the web server account must have read and write access to the application's directory. This is necessary because the web server account will automatically create the App_Data directory if it does not already exist.
If the application's App_Data directory already exists, the web server account only requires read and write access to the application's App_Data directory. This is necessary because the web server account will attempt to verify that the Sql Server Express database already exists within the application's App_Data directory. Revoking read access on the App_Data directory from the web server account will prevent the provider from correctly determining if the Sql Server Express database already exists. This will cause an error when the provider attempts to create a duplicate of an already existing database. Write access is required because the web server account's credentials are used when creating the new database.
Sql Server Express must be installed on the machine.
The process identity for the web server account must have a local user profile. See the readme document for details on how to create a local user profile for both machine and domain accounts.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)]
System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling) +821
System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) +5771923
System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions) +38
System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) +507
System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +154
System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +21
System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) +90
System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) +217
System.Data.SqlClient.SqlConnection.Open() +96
System.Web.Management.SqlServices.GetSqlConnection(String server, String user, String password, Boolean trusted, String connectionString) +75
[HttpException (0x80004005): Unable to connect to SQL Server database.]
System.Web.Management.SqlServices.GetSqlConnection(String server, String user, String password, Boolean trusted, String connectionString) +125
System.Web.Management.SqlServices.SetupApplicationServices(String server, String user, String password, Boolean trusted, String connectionString, String database, String dbFileName, SqlFeatures features, Boolean install) +89
System.Web.Management.SqlServices.Install(String database, String dbFileName, String connectionString) +29
System.Web.DataAccess.SqlConnectionHelper.CreateMdfFile(String fullFileName, String dataDir, String connectionString) +386
Interestingly in my local environment, it works fine, and it happens only in Azure.
For publishing to Azure I reconfigured the following properties in my web.config file as well, BUT I am still suspicious if I am missing some configuration somewhere else, since other parts of the application work fine such as login and registration:
Connection String:
<connectionStrings>
<!--<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-Portal.mdf;Initial Catalog=aspnet-Portal;Integrated Security=True" providerName="System.Data.SqlClient" />-->
<add name="DefaultConnection" connectionString="Data Source=tcp:***,1433;Initial Catalog=***;Persist Security Info=False;User ID=***;Password=***;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" providerName="System.Data.SqlClient" />
</connectionStrings>
And my Entity Framework configuration:
<entityFramework>
<!--<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">-->
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
<parameters>
<!--<parameter value="mssqllocaldb" />-->
<parameter value="Data Source=Data Source=***,1433;Initial Catalog=***;Persist Security Info=False;User ID=***;Password=***;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
I Was wondering, if there is any other configuration which I need to modify for RoleManager in order to work in Azure?
Thank you for your time and consideration.
If we create app with Individual User Accounts, by default, a connectionstring named “DefaultConnection” like below will be added in web.config which point to a LocalDb, if we publish app to Azure App service web app directly, we would see “A network-related or instance-specific error occurred while establishing a connection to SQL Server” error.
<!--<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-MVCAppWithRoleManager-20170630095851.mdf;Initial Catalog=aspnet-MVCAppWithRoleManager-20170630095851;Integrated Security=True"
providerName="System.Data.SqlClient" />-->
As you did, you could modify DefaultConnection with your Azure SQL database. And on my side, I can get login user info and check the role of current user after user login the app.
I am using Visual Studio 2013 Update 4, I have an ASP.NET MVC Web Application which is using Entity Framework 6.1.1.
When I try to run my web application, it fails to load with an error.
In the console I get the same error repetitively:
A first chance exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll
A first chance exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll
A first chance exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll
A first chance exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll
A first chance exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll
A first chance exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll
In the web browser I get this error:
Server Error in '/' Application.
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
SQLExpress database file auto-creation error:
The connection string specifies a local Sql Server Express instance using a database location within the application's App_Data directory. The provider attempted to automatically create the application services database because the provider determined that the database does not exist. The following configuration requirements are necessary to successfully check for existence of the application services database and automatically create the application services database:
If the application is running on either Windows 7 or Windows Server 2008R2, special configuration steps are necessary to enable automatic creation of the provider database. Additional information is available at: http://go.microsoft.com/fwlink/?LinkId=160102. If the application's App_Data directory does not already exist, the web server account must have read and write access to the application's directory. This is necessary because the web server account will automatically create the App_Data directory if it does not already exist.
If the application's App_Data directory already exists, the web server account only requires read and write access to the application's App_Data directory. This is necessary because the web server account will attempt to verify that the Sql Server Express database already exists within the application's App_Data directory. Revoking read access on the App_Data directory from the web server account will prevent the provider from correctly determining if the Sql Server Express database already exists. This will cause an error when the provider attempts to create a duplicate of an already existing database. Write access is required because the web server account's credentials are used when creating the new database.
Sql Server Express must be installed on the machine.
The process identity for the web server account must have a local user profile. See the readme document for details on how to create a local user profile for both machine and domain accounts.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)]
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +1900630
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +545
System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean withFailover) +452
System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover) +198
System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout) +923
System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance) +324
System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData) +646
System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) +459
System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions) +38
System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) +800
System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +143
System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +21
System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) +141
System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) +252
System.Data.SqlClient.SqlConnection.Open() +130
System.Web.Management.SqlServices.GetSqlConnection(String server, String user, String password, Boolean trusted, String connectionString) +75
[HttpException (0x80004005): Unable to connect to SQL Server database.]
System.Web.Management.SqlServices.GetSqlConnection(String server, String user, String password, Boolean trusted, String connectionString) +125
System.Web.Management.SqlServices.SetupApplicationServices(String server, String user, String password, Boolean trusted, String connectionString, String database, String dbFileName, SqlFeatures features, Boolean install) +89
System.Web.Management.SqlServices.Install(String database, String dbFileName, String connectionString) +29
System.Web.DataAccess.SqlConnectionHelper.CreateMdfFile(String fullFileName, String dataDir, String connectionString) +386
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.5.27.0
So I tried to connect to the database using SQL Server Management Studio using the connection string taken from the Properties windows in Visual Studio:
Data Source=(LocalDb)\v11.0;AttachDbFilename=C:\Users\Aaron\Desktop\AbcBankSolution\AbcBankWebApplication\App_Data\aspnet-AbcBankWebApplication-20150203085459.mdf;Initial Catalog=aspnet-AbcBankWebApplication-20150203085459;Integrated Security=True
This gives the following error:
The value's length for key 'data source' exceeds it's limit of '128'
Which is odd considering it is only 15 in length...
Finally, in Visual Studio, I can connect and refresh the database in the Server Explorer window, so I really don't know what is going on...
How can I fix this problem?
I tried many different solutions to fix this error. In the end, I discovered that it was the line after where the exception was shown as being thrown which had a problem - not the line where the debugger said it was!
The error looks pretty clear to me, it's unable to find the db in question, is trying to auto-create it in your app, and failing to do so.
Have you tried this part?
If the application is running on either Windows 7 or Windows Server 2008R2, special configuration steps are necessary to enable automatic creation of the provider database. Additional information is available at: http://go.microsoft.com/fwlink/?LinkId=160102.
Also, when you copy and paste your connection string into Management Studio, it's reading the whole string, not just the Data Source portion of the connection string, that's why the length is too long.
The data source length is the entire line length after Data Source=. That is,
Data Source=(LocalDb)\v11.0;AttachDbFilename=C:\Users\Aaron\Desktop\AbcBankSolution\AbcBankWebApplication\App_Data\aspnet-AbcBankWebApplication-20150203085459.mdf;Initial Catalog=aspnet-AbcBankWebApplication-20150203085459;Integrated Security=True
From the start of the line (Data Source=) is 247 characters long. Reducing the length by Data Source= gives us a length of 12 yields 235 characters in length. That far exceeds the max length of 128 character allowed for the property Data Source.
Place your database in a SHORT path, such as C:\DSolution. Cut down its name to something like ABS-2015020308.mdf Remember that all the specifiers such as Initial Catalog= and ;Integrated Security=True count as part of the Data Source property length. See if you even need to specify Initial Catalog.
Remember, you have to make everything from (LocalDB) to ;Integrated Security=True fit in less than 128 characters. So shorten your paths, and shorten your name at a minimum.
I can't comment on the solution of Aalawlx ... but in my case it was the same.
I had a line Membership.GetUser().ProviderUserKey.ToString() where the debugger stopped just before and gave me the SQL Error .... damn, costed me a long long lonnngg time and lots of Google :-)
Playing with azure, have a connection string. When the web app hits the first call that requires hitting the database i get this exception.
An exception of type 'System.InvalidOperationException' occurred in System.Data.dll but was not handled in user code
Additional information: The ConnectionString property has not been initialized.
the stack trace is
at System.Data.SqlClient.SqlConnection.PermissionDemand()
at System.Data.SqlClient.SqlConnectionFactory.PermissionDemand(DbConnection outerConnection)
at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
at System.Data.SqlClient.SqlConnection.Open()
at Microsoft.AspNet.Identity.EntityFramework.IdentityDbContext`1.IsIdentityV1Schema(DbContext db)
Fortunatley its on my constructor:
public SisyphusContext(string connectionString)
: base(connectionString)
{
}
and the connection string in there is valid. I took it, made a console app opened a connection selected a load of data. Interestingly the web app when it started successfully seeded the database presumably using this very connection string. (Well we know it cant of ...)
So my question: What is going on? How do i fix it?
Everything i have found suggests the string is wrong, but i have shown this is not the case. I suspect its magicking a connection string from somewhere but i cannto find it (in configs or publish files)
Although that said the seeding uses UserManager and RoleManager, wheras this uses my DbContext. That said i pass my context using the constructor here to build it - so thats probably not useful.
update:
here are the connection strings as part of deployment: found in obj\Release\Package\PackageTmp of the web project.
<connectionStrings>
<add name="DefaultConnection"
connectionString="$(ReplacableToken_DefaultConnection-Web.config Connection String_0)"
providerName="System.Data.SqlClient" />
<add name="Sisyphus.Core.Repository.SisyphusContext" connectionString="$(ReplacableToken_Sisyphus.Core.Repository.SisyphusContext-Web.config Connection String_0)"
providerName="System.Data.SqlClient"/>
<add name="Sisyphus.Core.Repository.SisyphusContext_DatabasePublish"
connectionString="$(ReplacableToken_Sisyphus.Core.Repository.SisyphusContext_DatabasePublish-Web.config Connection String_0)" providerName="System.Data.SqlClient"/>
</connectionStrings>
The thing is the connection string works. Just not in azure.
Is that Azure Web-Site or Web-Service?
In case of Web-Sites, Azure has connection strings in it's own configuration (Configuration page within portal). Check there if connection string is set.
You have 2 options here: keep connection string set in Azure config: make sure it is a correct one. Or delete connection strings from Azure entirely and use web.config settings. And if you are using web.config, make sure you transform your connection string correctly when deploying.
If your connection strings are fine in Azure portal, I'm pretty sure they are messed up during deployment. WebDeploy has a tendency to do strange things with connection strings, you need to stop it. So when you deploy, on settings page uncheck "Use this connection string":
And once you have deployed to Azure you can check the state of web.config either through Visual Studio 2013 Server Explorer:
Or through Kudu which you can access via https://<mywebsitename>.scm.azurewebsites.net/DebugConsole and navigate to web.config: