SQL Server2005 memory locking - sql-server

I've noticed that SQL Server 2005 x64 does not seem to lock pages into memory the same way SQL Server 2000 did. In 2000 I could easily see from task manager that SQL had locked 8GB of ram with AWE. I'm fairly certain I've got 2005 setup in an equivalent way.
Is this a normal x64 difference or am I forgetting a crucial setup option?

SQL Server 2005 x64 certainly doesn't need, or use, AWE; AWE is only to allow it to use > 4GB on 32 bit systems.
You can use the old lock-pages-in-memory trick, but as this KB shows (http://support.microsoft.com/kb/918483): "Note For 64-bit editions of SQL Server 2005, only SQL Server 2005 Enterprise Edition can use the Lock pages in memory user right."

I've seen permissions problems crop up a lot too - if the account you're using for the SQL Server service doesn't have the right permissions, it can't lock pages in memory even if you're running Enterprise Edition. This blog entry by the PSS SQL Server Engineers is really helpful:
PSS Engineers: Do I have to assign the Lock Pages in Memory privilege for Local System?

Related

SQL Server 2008 Installation pointers for optimizing Performance and Scalability

We are working for a client with an asp.net/SQL server application which has been using a SQL Server 2005 system till now. The client has decided to upgrade the database to SQL Server 2008 R2 and has procured a powerful server machine with 16 processors with enough RAM and installed Windows Server 2008 64 bit on the system. Now we are tasked with the installation of SQL Server 2008 on the system followed by migration of the existing DB from the SQL 2005 box. Now I am not a SQL Server DBA nor am I a System Administrator by role. Hence, in spite of reading up a lot of the literature on the net, I am not quite able to make sense of it all or put it in the right order of execution. Can somebody explain me the following items, preferably in terms of bullet lists:
What are the points of consideration during installation of SQL Server 2008, specifically in terms of
Configuring memory usage
Configuring the SQL Server to take advantage of the multiple processors available
Other factors to configure to enable SQL Server 2008 features for performance and scalability
Other points, if any, for configuring the Windows Server 2008 with respect to SQL Server 2008
Note: We will only use the Database Engine services in SQL Server. The applications does not use SSIS, SSRS, etc.
SQL Server will take advantage of whatever processors are available. Processors will be shared between sessions - if all of the work is being done by a single session, then it will all occur on the same processor (to the best of my knowledge - this requires citation).
Memory usage is dynamic by default, meaning that there is no restrication on memory usage. You can limit the memory usage used by the server (right-click on the connection in SSMS and select properties) if needed. This is generally used if the instance is part of a server performing other tasks, such as running other database instances, web service tasks, etc.
SQL server is pretty good it sorting itself out according to its environment. If you are in a position that you need to create a server farm and distribute data and processing between different machines, this is a whole new topic, discussed at length on MSDN and the StackExchange forums.

Is AWE in SQL 2005 Ent needed on 2003 32-bit w/ 24GB?

I have a WS 2003 32-bit system running SQL Server 2005 Enterprise with 24GB of RAM. The /PAE switch is enabled. Can SQL now use the 24GB or does AWE need to be enabled?
You need to enable AWE and also grant the SQL Server Service account the "Lock pages in memory" privilege.
Useful Reading: SQL Server 2005 awe and memory
For more concise steps consult the books online documentation: Enabling AWE Memory for SQL Server
Hope this helps but let me know if you have further questions.
It depends on what version of Windows you're running. Standard Edition will only see 4Gb irrelevant how many switches you add. You need Windows Server 2003 Enterprise Edition for the /PAE switch to see the entire 24GB of RAM. See Physical Memory Limits: Windows Server 2003.

Are Microsoft SQL Server "Express" editions free to develop on?

Am I able to develop a software for free on Microsoft SQL Server 2005/2008 Express edition databases?
Yes, You can.
But Express version have few limitations
SQL Server use only one CPU at a time
Maximum memory is 1GB
Database size limit is 4GB
And you can redistribute SQL Server, but you must register for that at Microsoft.
UPDATE - SQL Server 2008 R2
Database size limit is 10GB
Yes, here is a relevant faq.
You are free to redistribute your applications commercially...
Yes, SQL Server Express is free to develop on, free to use, free to ship to your customers - FREE all around! :-)
In addition to MicTech's list of limitations, SQL Server Express is (at this time) 32-bit only.
As for the 4 GB limitation for the database, this is per database, so you can easily have several databases in SQL Server Express on the same machine - each up to 4 GB in size. And in SQL Server Express 2008, the data stored in the FILESTREAM filegroup (BLOBs stored on disk) is not considered for this limit.
Marc
Wrong Answer: As far as I know, you are free to develop in any Microsoft Express Edition as long as you do not redistribute the code commercially.
EDIT: I swear I read a license a while ago which said you couldn't. They must have changed it on me, either that or I'm thinking of the license for my student edition. Sorry about that.
Another Edit: Just clarifying, my original answer was completely wrong, I got my MS licenses confused. As far as I know from reading the licenses last night, you can develop to your hearts content with Microsoft Express Edition software.

How does DB2 Express compare to Sql Server Express?

I have only just found out about DB2 Express. I had a quick look and was unable to find a load of information about it but would be interested in hearing how people have found it compared to SQL Server Express (particularly 2008) in terms of
Ease of deployment
Ease of use and development tools
Limitations such as size or CPU limits
Integration with .NET and other third party tools like nHibernate
DB2 Express is not free, DB2 Express-C (as Troels pointed out), is free to use. DB2 Express-C is cross-platform, and would probably be faster than PostgreSQL for mid-sized enterprise applications. DB2 is generally a little cheaper than Oracle as well, so if you needed to upgrade, DB2 might be a decent option.
I'd recommend DB2 Express-C if you need cross-platform enterprise scalable applications with solid enterprise grade management tools. That said, your question was how it compared against SQL Server Express ... so here are specific answers to those questions:
DB2 Express is easier to deploy than Oracle, more difficult than MS SQL.
For whatever reason, I've always dropped into SQL DDL statements (CREATE/ALTER TABLE, etc.) with DB2 and Oracle instead of using their Admin tools, while SQL Server Management Studio (even the free version) seem easy/fast enough to warrant using. This might just be me though
Currently DB2 Express-C has a 4 core (2 CPU), 2 GB limit, with no database size limit (more info). These limits are far better than MSSQL Express's (1 CPU, but no core limit, 1GB RAM, and 4GB database size)
Not surprisingly, SQL Server Express integrates much better with .NET applications (assuming you're using Visual Studio). However, DB2 generally works better with Java than SQL Server
I hope this helps!
I assume that you are talking about the Express-C edition of DB2 (which is not the samme as DB2 Express).
1,2: If you are generally working on a Windows platform (dev tools, backend+frontend, ...), you will find MSSQL easier to deploy and use. And in general, MSSQL is probably a bit easier to deploy than DB2.
3: Among the free offerings from the "big three" vendors, DB2 Express-C has the least restrictions.

Upgrading SQL 2000 32-bit to SQL 2008 64-bit

I have a number of databases on a Windows 2000 Server running the 32 bit version of SQL Server 2000. I need to transfer all the data and settings to a new server running the 64 bit version of SQL 2008 on Windows 2003 64 bit.
Is this as simple as backing up the databases and restoring to the new server. Will this work with the system databases (master, model, msdb) as well? If not, is there a way to automate the process of moving across the user accounts and permissions?
Is anybody aware of any other gotchas?
Many thanks for any help.
[EDIT] I've successfully tested an upgrade to SQL2008 32-bit, I'm mostly concerned with any differences in the 64-bit version as I don't have a 64 bit server I can test on at the moment e.g. I know you can't restore a SQL2000 master database to 2008; can you restore a SQL2008 32bit master to SQL2008 64bit? Downtime during the migration is not a problem.
To transfer logins, you should be able to use the 'Transfer Logins Task' described in Books Online here.
Ross Mistry has published a few articles on SQL Server 2008 Installation Strategies and Best Practices. Also this document, although directed at specific hardware, contains useful info.
EDIT: Have you looked at the Microsoft SQL Server 2008 Upgrade Advisor?
I would use the RedGate SQL Compare and SQL Data Compare. That would give you some assurances of the integrity of the database. However its not going to be an online migration of the data, you would have to prevent updates during the transition.

Resources