Updating connection string in IIS10 and SQL Server 2019 Express - sql-server-express

I have a working web site that is running in IIS on Windows Server 2008 R2 and using SQL Server 2008 Express. I am trying to port the entire site to Windows Server 2022 using SQL Server 2019 Express.
I moved all the code, set up all the permissions like the original set up, but I just can not get the database connection to work. I am using the same connection string, so this is leading me to a permissions issues on the database. But with the use of localDB, I am not sure if there is an issue there.
I previously used the IIS APPPOOL\APP PoolName to access the database, so I was hoping this would continue to work. This does not appear to be the case at the moment.
The error I am getting though looks like the old way will not work:
Parser Error Message: The sqlConnectionString attribute or the connection string it refers to cannot contain the connection options 'Database', 'Initial Catalog' or 'AttachDbFileName'. In order to allow this, allowCustomSqlDatabase attribute must be set to true and the application needs to be granted unrestricted SqlClientPermission. Please check with your administrator if the application does not have this permission.
The connection string currently in use is:
Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\db_name_chgd.mdf;Integrated Security=True;MultipleActiveResultSets=True
I have not been able to find any new info on connecting to a SQL Server Express local database on the same web server. I am NOT using the localDB, but if I need to change to that sort of a config, I would like to read up on the required changes.

So the solution that worked for me is the following.
In the web.config file I commented out the SessionState tag....
<!-- <sessionState allowCustomSqlDatabase="true" mode="SQLServer" sqlConnectionString="ConnectionStringMyConection" sqlCommandTimeout="30" cookieless="UseUri" timeout="20">
</sessionState> -->
Everything worked fine after that.

Related

SQL Server Express error: Operation is not valid due to the current state of the object

We have a problem with our SQL Express server and need help please. We use this SQL Express server with a banking program on one windows computer. When we try to do some task in the application which was always working fine before we are now getting a error:
Operation is not valid due to the current state of the object
Google is showing me that we should add entries in web.config file to fix this problem. It is explained here:
http://sqlservercentral.com/forums/topic/sql-server-reporting-services-error-operation-is-not-valid-due-to-the-current-state-of-the-object
http://social.msdn.microsoft.com/Forums/sqlserver/ar-SA/c9d4431a-0d71-4782-8f38-4fb4d5b7a829/ssrs-operation-is-not-valid-due-to-the-current-state-of-the-object?forum=sqlreportingservices
The problem is that it seems the web.config file does not exist in SQL Server Express and I'm not able to fix this issue.
Where can we apply this settings on a SQL Express Server? Does a express server have this web.config file?

SQL Server authentication for a Database file

I use Microsoft Visual Studio Professional 2013. I created Database1.mdf in my App_Data folder. By default, it uses integrated Windows authentication. I have no problem connect to this database file, but when I update all file into web space and browse it in browser, it has an error. I think I need to change it to SQL Server authentication instead of integrated Windows authentication.
My questions are:
How can I change it to SQL Server authentication step by step? I want to connect this data file with user name & password.
How to assign user into it?
You need to attach the database file to your SQL Server:
http://www.youtube.com/watch?v=rhIr9Qf-oHw
Then you create the type of logins you want:
http://www.youtube.com/watch?v=Uh5USR7pymE
You can now detach the database. Your application can use now the new logins. If you change from Windows to User/password your connection will need to say so, something like:
Server=myServerAddress;Database=myDataBase;User Id=myUsername;
Password=myPassword;
I also found this helpful link that describes also the steps:
SQLExpress - How do I set username/password for a sql datafile
Hope this helps.

Page does not load after I migrated the database from SQL CE to SQL Server

I am running into an issue. I have developed a site in webmatrix with SQL server compact edition. My site is ready and I can see it run without any issue in my PC. However, I ran into an issue after migrating the database to SQL server. Migration finished successfully and I can see all my tables, data in the migrated database. But I can not run the page anymore. In IE browser, it gives me error Page cannot be displayed. (In other browsers it just tries to load indefinitely).
I don't know what is the issue. If I remove the migrated database file(.mdf) and put the .sdf back in APP_DATA folder and connect it in database workspace, my site starts working again.
Note: I can see a connection string added to web.config file when migration is completed.
Verify that you can connect to the migrated database from within SQL Server Management Studio(SSMS). Your connection string in the web.config file needs to be correct and should look something like:
<connectionStrings>
<add connectionString="Server=SERVER01;Database=mydatabase;Uid=user;Pwd=password" name="somename" providerName="System.Data.SqlClient" />
</connectionStrings>
After logging in through SSMS you will know what the settings should be. I hope this helps you.
Thomas, thanks for your reply. Glad to let you know that issue has been resolved. The issue was regarding the sql server version. Basically I had SQL commands like "fetch first n rows only" etc. Now, this is not supported in SQL 2008. My migrated database was in 2008. When I imported the data into SQL 2012 database, it started working now.

SQL Server Express unable to attach or delete mdf file

My database file Whist.mdf was attached to a SQL Server Express through Management Studio, but it stopped working in that sense that NHibernate in my asp.net solution fired some connection exceptions. I just detached it from Management Studio because I couldn't open the database in there either.
But when I try to reattach it I get this error:
Attach database failed for Server 'MyPCName\SQLECPRESS'. (Microsoft.SqlServer.Smo) Unable to open the physical file "C:\Program
Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\Whist.mdf".
Operating system error 32: "32(process cannot access the file because
it is being used by another process)". (Microsoft SQL Server, Error:
5120)
I have googled it but can't find a solution that works for me. E.g.:
http://www.byteblocks.com/post/2010/01/06/Unable-to-open-the-physical-file-Microsoft-SQL-Server.aspx
"Cannot open user default database. Login failed." after installing SQL Server Management Studio Express
There is something about User Instance but I cant figure out if it have anything to do with that:
http://blogs.msdn.com/b/sqlexpress/archive/2006/11/22/connecting-to-sql-express-user-instances-in-management-studio.aspx
I have tried to delete the mdf file in windows but I can't do that either:
The action can't be completed because the file is open in system
I have tried stopping the SQL Server process, closing explore and delete from cmd and rebooting...
Hope someone can help - I guess it is just a simple thing..
I think you are on the right track. The error messages you are getting indicate that some SQL Server process is keeping the database file open. And SQL Server is designed to only allow the database file to be open by a single SQL Server process at a time.
You are also probably right to suspect User Instance of SQL Server Express to be the guilty process here. User Instance is a special SQL Server process that doesn't run as a service and instead is started and owned by the application that tries to connect to it. In your case there are two User Instances that can be the problem, one owned by the ASP.NET application you mentioned and one owned by you and started by Visual Studio. If you are using IIS Express or you configured the IIS App Pool for the ASP.NET application to run as your account then we only have one User Instance to worry about.
My recommendation is that you don't use User Instances and don't try to connect directly to the database file. Go over your connection strings and remove User Instance=true from all of them. You want to remove AttachDBFilename=... property as well.
If the database file is added to any of your Visual Studio solutions remove it (just be careful not to delete the file itself). The last step is to remove any connections to the database file from your Data Connections node in the Server Explorer.
Then restart the machine to make sure any User Instances that were running in the background were shutdown. After the machine starts again you should be able to attach the database file back to your main SQL Server Express using SQL Server Management studio. Let's name the database Whist
To connect to your database use the following connection string:
Data Source=.\SQLExpress;Integrated Security=true;Initial Catalog=Whist
When you connect from the ASP.NET application, make sure that you have created an account in your SQL Server Express for the application.
Turned out to be an issue with Daemon tools for me as well associating the .mdf file as an image.
If you want to copy your .mdf and .ldf file from your database, you can set your database file to 'offline' first . Please follow this steps:
Open your SQL Server 2008(suppose you are using SQL Server 2008 ).
Select your Database that you want to copy then left click.
Go to Tasks -> Take Offline.
Right click.
Then you can copy this database file to any folders.

How can i test my TSQL syntax?

Quick question: How do I get some kind of database to use to test my SQL syntax and create basic data.
I have Sqlite Code which I'll soon put on a server. I have SQL Server 2008 installed with visual studio 2010. I tried connecting to the database and had no luck.
I also tried using an .mdf file instead thinking it's a file and I won't have connectivity issues. Wrong, I still couldn't connect and I used this site to help me (i'm aware its 2005)
In that case I used:
var conn = new SqlConnection(#"Server=.\SQLExpress;AttachDbFilename=C:\dev\src\test\SQL_DB_VS_Test\test.mdf;Database=dbo;Trusted_Connection=Yes;");
exception
Unable to open the physical file "C:\dev\src\test\SQL_DB_VS_Test\test.mdf".
Operating system error 5: "5(Access is denied.)".
Cannot attach the file 'C:\dev\src\test\SQL_DB_VS_Test\test.mdf' as database 'dbo'.
With trusted = no I get Login failed for user ''. (What user am I suppose to set?). I created the .mdf with Visual Studio somehow.
What if you try this connection string:
var conn = new SqlConnection(#"Server=.\SQLExpress;
AttachDbFilename=C:\dev\src\test\SQL_DB_VS_Test\test.mdf;
Database=test;Integrated Security=SSPI;");
I don't think it's a good idea to call your database "dbo" (that's a SQL Server keyword - I wouldn't use it for my own purposes!), and also I believe you need to use Integrated Security=SSPI; to define Windows authentication - Trusted_Connection is not used for SQL Server connection strings, AFAIK.
Have you tried using SSMS to access your local instance? It's helpful for getting connected and getting everything setup. Also, I think the default install of Sql Express with VS only support trusted connections.
After creating the mdf file with visual studios right click the mdf and select properties. In it you'll see a row called Connection String. Copy/paste it into your app and it should connect. The key part is User Instance=True