<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7775527551184947725</id><updated>2011-07-29T03:50:57.163+02:00</updated><category term='Editions'/><category term='Sql Server tool'/><category term='Upgrade'/><category term='SSMA'/><category term='Drivers'/><category term='MS DTC'/><category term='Estimate database size'/><category term='resources'/><category term='Scripts'/><category term='DB Goby'/><category term='Migration'/><category term='Locks'/><category term='Sybase'/><category term='Create insert scripts'/><category term='T-SQL'/><category term='SSIS'/><category term='links'/><category term='Dual Core'/><category term='Reinstall'/><category term='Conversion'/><category term='Move database'/><category term='Login'/><title type='text'>DB Goby</title><subtitle type='html'>My blog about SQL Server</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dbgoby.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7775527551184947725/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://dbgoby.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Øystein Sundsbø</name><uri>http://www.blogger.com/profile/12512328996609113838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7775527551184947725.post-6286272135154913146</id><published>2008-01-09T14:31:00.000+01:00</published><updated>2008-01-09T14:57:03.740+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DB Goby'/><category scheme='http://www.blogger.com/atom/ns#' term='Move database'/><category scheme='http://www.blogger.com/atom/ns#' term='Upgrade'/><title type='text'>New version of DB Goby soon ready!</title><content type='html'>A new version of DB Goby is soon ready.&lt;br /&gt;&lt;br /&gt;New features:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1) Moving database files will be easier.&lt;/strong&gt;&lt;br /&gt;It will now be possible to move files for severeal databases at once, based on a rule set. In this way it is easier to i.e. move all data files on a server to a second disk, and all log files to a third disk. This in just one operation.&lt;br /&gt;&lt;br /&gt;This is a great feature when you run out of disk space on your server, and need to add more disks, or if you need to tidy up your placements of data files.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2) Database file management.&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Create file groups and files in an easier way based on customizable templates.&lt;/li&gt;&lt;li&gt;Redistribute data over several files within a file group, so that data is evenly spread over the files. &lt;/li&gt;&lt;/ul&gt;When you are adding new files to a filegroup, the existing data will still remain in the old files resulting in an unbalanced file distribution. If you are designing your server architecture like described in the article "&lt;a href="http://www.microsoft.com/technet/prodtechnol/sql/2005/physdbstor.mspx"&gt;Physical Database Storage Design&lt;/a&gt;", you will get a better I/O after using this redistribution feature.&lt;br /&gt;&lt;br /&gt;The new version is estimated available in a week or two.&lt;br /&gt;&lt;br /&gt;Best regards&lt;br /&gt;   Øystein&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7775527551184947725-6286272135154913146?l=dbgoby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dbgoby.blogspot.com/feeds/6286272135154913146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7775527551184947725&amp;postID=6286272135154913146' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7775527551184947725/posts/default/6286272135154913146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7775527551184947725/posts/default/6286272135154913146'/><link rel='alternate' type='text/html' href='http://dbgoby.blogspot.com/2008/01/new-version-of-db-goby-soon-ready.html' title='New version of DB Goby soon ready!'/><author><name>Øystein Sundsbø</name><uri>http://www.blogger.com/profile/12512328996609113838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7775527551184947725.post-7816773127076902991</id><published>2008-01-07T13:51:00.000+01:00</published><updated>2008-01-07T14:01:50.281+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MS DTC'/><category scheme='http://www.blogger.com/atom/ns#' term='Locks'/><title type='text'>Orphaned Transactions</title><content type='html'>If you are using distributed transactions (MS DTC), it may happen that Sql Server loses the connection to the coordinator and the transactions will neither be commited or rolled back.&lt;br /&gt;The locks by this transaction will remain on the server until you manually remove it, or restart the server.&lt;br /&gt;You will see these locks in the Activity Monitor with a Process ID (PID) = -2&lt;br /&gt;&lt;br /&gt;You can't just kill the -2 PID, so you need to get hold of what the Unit of Work ID is for these transactions by running the following query:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#000099;"&gt;select request_owner_guid&lt;br /&gt;from sys.dm_tran_locks&lt;br /&gt;where request_owner_guid &lt;&gt; '00000000-0000-0000-0000-000000000000'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For those UoW IDs, run the KILL command, like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#000099;"&gt;KILL 'B8041DFE-0732-418F-98AA-FE4D05DA554B'&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7775527551184947725-7816773127076902991?l=dbgoby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dbgoby.blogspot.com/feeds/7816773127076902991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7775527551184947725&amp;postID=7816773127076902991' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7775527551184947725/posts/default/7816773127076902991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7775527551184947725/posts/default/7816773127076902991'/><link rel='alternate' type='text/html' href='http://dbgoby.blogspot.com/2008/01/orphaned-transactions.html' title='Orphaned Transactions'/><author><name>Øystein Sundsbø</name><uri>http://www.blogger.com/profile/12512328996609113838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7775527551184947725.post-2033046406242023715</id><published>2007-12-10T14:07:00.000+01:00</published><updated>2007-12-10T14:22:27.102+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Drivers'/><category scheme='http://www.blogger.com/atom/ns#' term='Dual Core'/><title type='text'>Problems with Dual Core Processors</title><content type='html'>I have a computer with a dual core processor myself, and I experienced problems with some computer games where the internal CPU timer really messed up the game. The graphics went faster and faster until my computer crashed with a blue screen. One trick was to set the CPU affinity on the application to one core. But that wasn't a satisfying solution.&lt;br /&gt;&lt;br /&gt;I used a lot of time reading discussion forums to get rid of the problem.&lt;br /&gt;&lt;br /&gt;The first recommondation I got was to try a hotfix that Microsoft had released, but that didn't solve the problem, it only introduced some more.&lt;br /&gt;&lt;br /&gt;I also disabled the Qool'n'Quit technology in the BIOS, that helped some, but there was still a problem.&lt;br /&gt;&lt;br /&gt;Later AMD came with a driver update that fixed the problem, and things seemed to work ok.&lt;br /&gt;&lt;br /&gt;Now I have been introduced to similar problems for SQL Server. I know there has been problems with time stamping both for SQL Server 2005 and Reporting Services due to CPUs that change frequencies.&lt;br /&gt;&lt;br /&gt;Microsoft has released a KB about this that you should read, if you have a servers running on dual core processors and you are getting strange error messages (i.e. I/O timeout).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;931279"&gt;http://support.microsoft.com/default.aspx?scid=kb;EN-US;931279&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7775527551184947725-2033046406242023715?l=dbgoby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dbgoby.blogspot.com/feeds/2033046406242023715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7775527551184947725&amp;postID=2033046406242023715' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7775527551184947725/posts/default/2033046406242023715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7775527551184947725/posts/default/2033046406242023715'/><link rel='alternate' type='text/html' href='http://dbgoby.blogspot.com/2007/12/problems-with-dual-core-processors.html' title='Problems with Dual Core Processors'/><author><name>Øystein Sundsbø</name><uri>http://www.blogger.com/profile/12512328996609113838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7775527551184947725.post-3603578556562662428</id><published>2007-12-10T11:12:00.000+01:00</published><updated>2007-12-10T13:00:27.178+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='T-SQL'/><title type='text'>How NULL values affect NOT IN queries</title><content type='html'>Using NOT IN queries may give unexpected results when the sub query contains Null values. I'll give you an example:&lt;br /&gt;&lt;br /&gt;We create a table:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#000066;"&gt;Create table #Person&lt;br /&gt;([Id] int identity, [Name] nvarchar(20) not null, [Spouse] int null)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#000066;"&gt;insert into #Person([Name], [Spouse])&lt;br /&gt;select 'Jim', 2&lt;br /&gt;union all&lt;br /&gt;select 'Nora', 1&lt;br /&gt;union all&lt;br /&gt;select 'Jane', null&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Jim and Nora are married to each other. Jane is unmarried.&lt;br /&gt;&lt;br /&gt;Lets try a query that counts unmarried people, using NOT IN:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#000066;"&gt;select count(*) as [Unmarried]&lt;br /&gt;from #Person where [Id] not in&lt;br /&gt;(select [Spouse] from #Person)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#000066;"&gt;Unmarried&lt;br /&gt;-----------&lt;br /&gt;0&lt;br /&gt;(1 row(s) affected)&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;So none is unmarried?&lt;br /&gt;&lt;br /&gt;Ok. Let's try something different. Let's make a query to find out how many is not married to 'Jim':&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;span style="color:#000066;"&gt;select count(*) as [Not married to Jim]&lt;br /&gt;from #Person where [Id] not in&lt;br /&gt;(select [Spouse] from #Person&lt;br /&gt;where [Name] like 'Jim')&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;span style="color:#000066;"&gt;Not married to Jim&lt;br /&gt;------------------&lt;br /&gt;2&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#000066;"&gt;(1 row(s) affected)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;&lt;/span&gt;&lt;br /&gt;Hmm. Here we got a correct result. Is it because the sub query does not contain a Null value? Let's try getting another query where the sub query contains Null:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#000066;"&gt;select count(*) as [Not married to Jane]&lt;br /&gt;from #Person where [Id] not in&lt;br /&gt;(select [Spouse] from #Person&lt;br /&gt;where [Name] like 'Jane')&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#000066;"&gt;Not married to Jane&lt;br /&gt;-------------------&lt;br /&gt;0&lt;br /&gt;(1 row(s) affected)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ok? Appearantly, all are married to Jane...&lt;br /&gt;&lt;br /&gt;Lets try the first query with Not Exists, instead of Not In:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#000099;"&gt;select count(*) as [Unmarried]&lt;br /&gt;from #Person P1 where not exists&lt;br /&gt;(select 1 from #Person P2 where P2.[Spouse]=P1.[Id])&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#000099;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#000099;"&gt;Unmarried&lt;br /&gt;-----------&lt;br /&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#000099;"&gt;(1 row(s) affected)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;&lt;/span&gt;&lt;br /&gt;Here we got a correct answere.&lt;br /&gt;&lt;br /&gt;I guess the conclusion is to be very aware when using Not In in a query. If Null is in the result in the sub query, you most likely will get a wrong result. Use Not Exists rather then Not In if possible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7775527551184947725-3603578556562662428?l=dbgoby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dbgoby.blogspot.com/feeds/3603578556562662428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7775527551184947725&amp;postID=3603578556562662428' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7775527551184947725/posts/default/3603578556562662428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7775527551184947725/posts/default/3603578556562662428'/><link rel='alternate' type='text/html' href='http://dbgoby.blogspot.com/2007/12/how-null-values-affect-not-in-queries.html' title='How NULL values affect NOT IN queries'/><author><name>Øystein Sundsbø</name><uri>http://www.blogger.com/profile/12512328996609113838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7775527551184947725.post-2600301928423976207</id><published>2007-11-01T13:13:00.000+01:00</published><updated>2007-11-01T14:01:37.485+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Editions'/><category scheme='http://www.blogger.com/atom/ns#' term='Reinstall'/><category scheme='http://www.blogger.com/atom/ns#' term='Upgrade'/><title type='text'>Changing Sql Server Edition</title><content type='html'>Have you been in a situation where you have installed and used Sql Server Standard Edition, but need features from Enterprise Edition?&lt;br /&gt;Or perhaps you have Enterprise Edition but should have installed Standard Edition due to licence costs?&lt;br /&gt;I have even experienced vendors to install Developer Edition on a production server, which is not allowed!&lt;br /&gt;&lt;br /&gt;If you need to change to another edition, you might have serious issues to uninstall the server so you can install the preferred edition. All information in the system databases will be lost.&lt;br /&gt;&lt;br /&gt;Off course you can do a restore of the msdb and tempdb databases to get jobs etc back, but the master database can't be restored due to different version numbers.&lt;br /&gt;&lt;br /&gt;The master database might contain user defined procedures, functions, sysmessages, extended procedures etc. that are vital for the applications.&lt;br /&gt;&lt;br /&gt;So what do you do?&lt;br /&gt;&lt;br /&gt;Well, you can actually change the edition without reinstalling. Just run the setup.exe file from command prompt with the SKUUPGRADE parameter:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;start /wait setup.exe ADDLOCAL=SQL_Engine INSTANCENAME=MSSQLSERVER&lt;br /&gt;UPGRADE=SQL_Engine &lt;strong&gt;SKUUPGRADE=1&lt;/strong&gt; /qb&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;This will work for the default instance. For a named instance you will have to change some of the parameters.&lt;br /&gt;&lt;br /&gt;After installation, remember to reinstall Service Packs.&lt;br /&gt;&lt;br /&gt;Be sure to take a backup of your databases before doing this! ;-)&lt;br /&gt;&lt;br /&gt;Check out the install features at: &lt;a href="http://msdn2.microsoft.com/en-gb/library/ms144259.aspx"&gt;http://msdn2.microsoft.com/en-gb/library/ms144259.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7775527551184947725-2600301928423976207?l=dbgoby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dbgoby.blogspot.com/feeds/2600301928423976207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7775527551184947725&amp;postID=2600301928423976207' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7775527551184947725/posts/default/2600301928423976207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7775527551184947725/posts/default/2600301928423976207'/><link rel='alternate' type='text/html' href='http://dbgoby.blogspot.com/2007/11/changing-sql-server-edition.html' title='Changing Sql Server Edition'/><author><name>Øystein Sundsbø</name><uri>http://www.blogger.com/profile/12512328996609113838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7775527551184947725.post-8292665911592762419</id><published>2007-11-01T12:19:00.000+01:00</published><updated>2007-11-01T12:39:00.994+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Login'/><category scheme='http://www.blogger.com/atom/ns#' term='Scripts'/><category scheme='http://www.blogger.com/atom/ns#' term='Move database'/><title type='text'>What about the logins?</title><content type='html'>When you are moving or copying a database from one server to the other using the detach/ attach method, the user objects follow the data file. But what about the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;logins&lt;/span&gt;?&lt;br /&gt;&lt;br /&gt;The database user objects are connected to the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;logins&lt;/span&gt; using &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;SIDs&lt;/span&gt;, and when attaching a database on a new server, the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;login&lt;/span&gt; for that user may not exist, or it may have a completely different SID.&lt;br /&gt;&lt;br /&gt;One solution is to drop the user objects and recreate them based on the new server's &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;logins&lt;/span&gt;, but then you would also have to reset the users' access rights and ownerships.&lt;br /&gt;&lt;br /&gt;And what about missing &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;SQL&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Logins&lt;/span&gt; on the new server? Can you script &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;logins&lt;/span&gt; without compromising the passwords? Perhaps you don't even know the passwords...&lt;br /&gt;&lt;br /&gt;There is a great &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;MSDN&lt;/span&gt; article on how to do this at &lt;a href="http://support.microsoft.com/kb/246133"&gt;http://support.microsoft.com/kb/246133&lt;/a&gt; .&lt;br /&gt;&lt;br /&gt;If you can use the &lt;em&gt;Copy Database Wizard, &lt;/em&gt;I think this will be taken care of automatically, but I haven't tested it, yet.&lt;br /&gt;&lt;br /&gt;I actually plan to add a tool to DB &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Goby&lt;/span&gt; that creates scripts that in addition to attach a database, also scripts &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;logins&lt;/span&gt; and match the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;SIDs&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7775527551184947725-8292665911592762419?l=dbgoby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dbgoby.blogspot.com/feeds/8292665911592762419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7775527551184947725&amp;postID=8292665911592762419' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7775527551184947725/posts/default/8292665911592762419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7775527551184947725/posts/default/8292665911592762419'/><link rel='alternate' type='text/html' href='http://dbgoby.blogspot.com/2007/11/what-about-logins.html' title='What about the logins?'/><author><name>Øystein Sundsbø</name><uri>http://www.blogger.com/profile/12512328996609113838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7775527551184947725.post-3504830545410299744</id><published>2007-10-18T16:01:00.000+02:00</published><updated>2007-10-19T15:02:19.886+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Conversion'/><category scheme='http://www.blogger.com/atom/ns#' term='SSMA'/><category scheme='http://www.blogger.com/atom/ns#' term='Migration'/><category scheme='http://www.blogger.com/atom/ns#' term='Sybase'/><title type='text'>Migrating from Sybase to Sql Server</title><content type='html'>The last days I've been working on a project where I tested conversion of some databases.&lt;br /&gt;&lt;br /&gt;The source was &lt;em&gt;Sybase version 11.9&lt;/em&gt;, and I wanted to migrate to &lt;em&gt;Sql Server 2008&lt;/em&gt;. As I found, this was not an easy job!&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Sql Server Migration Assistant for Sybase (SSMA)&lt;/em&gt; only support Sybase version 12.5 or newer, and Sql Server 2005.&lt;br /&gt;&lt;br /&gt;So I set up a temporary Sql Server 2005 for the migration job, and then I wanted to test how far I could get with a version 11.9 database.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Connection problems&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The first problem was connecting to the Sybase database. I had installed the Sybase ODBC driver, but it wouldn't show up in the list in the Data Sources (ODBC) tool. After a search on the web, I found that when using a 64 bits server (Windows Server 2008), the system would have two folders for ODBC drivers; one for 32 bits drivers, and one for 64 bits drivers. The driver had installed itself in the 64 bits folder, while the Data Sources (ODBC) tool would only look up drivers in the 32 bits folder. Bummer!&lt;br /&gt;&lt;br /&gt;I then installed SSMA on a Windows Server 2003, and could finally create an ODBC DSN. But I still could not connect to the Sybase database from the SSMA. After asking a Sybase DBA for help, we noticed that SSMA used the native Sybase driver and not the ODBC, and that required some .ini files in the Sybase folder to be configured to be pointed to the correct database and server. We finally had a connection! :)&lt;br /&gt;&lt;br /&gt;Connecting to the Sql Server went off course smooth!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;Converting a small database&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I first tried to convert a small database with few objects and small amounts of data. This went relatively well. We had one single error converting the objects.&lt;br /&gt;&lt;br /&gt;When installing the SSMA, it creates a conversion database on the Sql Server, containing some informaiton that is needed in the conversation process. Among other things it contains system functions that are treated differently in Sybase and Sql Server. For instance the &lt;em&gt;datediff &lt;/em&gt;function is implemented as a user function called &lt;em&gt;ssma_datediff &lt;/em&gt;so it is not confused with the original datediff system function in Sql Server.&lt;br /&gt;&lt;br /&gt;When converting stored procedures containing calls to the datediff function, it would translate to:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;sysdb.ssma_syb.ssma_datediff(...)&lt;/span&gt;&lt;/blockquote&gt;This returned an error in the SSMA engine because it could not validate the object.&lt;br /&gt;&lt;br /&gt;What I did to solve this was that I imported the function into the database I was converting to, and changed the migration script so it called an internal user function instead:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;dbo.ssma_datediff(...)&lt;/span&gt;&lt;/blockquote&gt;After that we migrated the data content, and there were no hiccups. Mission Accomplished!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;Going for a larger database&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;OK. Now for a greater challenge: A Sybase database containing more than 450 tables, 150 views, 400 stored procedures, 200 triggers, 100 user defined data types, and many of the tables containing several millions of rows.&lt;br /&gt;&lt;br /&gt;This time, when migrating the database objects with SSMA, I got a sql script with over 400 000 lines and with more than 2000 errors! Sigh!&lt;br /&gt;&lt;br /&gt;I then started to edit the sql script, and found 4 kinds of problems:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1) System function calls&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;As with the small database, this one had a lot of references to user defined functions in the sysdb database. Solution: Import the functions and rewrite the call.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2) Parameters and Variables in Stored Procedures and Triggers&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;SSMA didn't just put brackets around object names like tables, schemes, database etc, but also around parameters and variables in the SPs. I think I had like 40 000 in the script that looked like this: &lt;em&gt;[@myVariable]&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Editing these by hand was out of question, so how do I use a search/replace without removing the brackets around the objects that should have them? I started to play around with Regular Expressions and ended up with this:&lt;br /&gt;&lt;br /&gt;Search: &lt;span style="font-family:courier new;"&gt;\[{\@[A-Za-z0-9_]+}\]&lt;/span&gt;&lt;br /&gt;Replace: &lt;span style="font-family:courier new;"&gt;\1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;That hit the spot!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3) Old outer join syntax&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;A lot of procedures in the sybase database had old outer join expressions, and the SSMA couldn't translate them, so I had to do that manually.&lt;br /&gt;&lt;br /&gt;Old syntax:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;select * from&lt;br /&gt;[TableA] a, [TableB] b&lt;br /&gt;where&lt;br /&gt;b.[a_ID]=*a.[ID]&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;Corrected syntax:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;select * from&lt;br /&gt;[TableA] a&lt;br /&gt;left outer join [TableB] b&lt;br /&gt;on b.[a_ID]=a.[ID]&lt;/span&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;4) Aggregates on aggregated values&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Several of the procedures had queries using aggregates on aggregated values, like this:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;declare @maxDate int&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;select @maxDate = isnull(max(max(a.[Date])),0) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;from [TableA] a&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;group by a.[Date]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;having sum(a.[Amount])!=0&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;First of all, this is not a valid TSQL statement in SQL Server. You will get an exception saying "&lt;em&gt;Cannot perform an aggregate function on an expression containing an aggregate or a subquery.&lt;/em&gt;"&lt;br /&gt;&lt;br /&gt;Second, this statement doesn't make much sense to me! You are grouping by the &lt;em&gt;Date &lt;/em&gt;column and then selecting the max value of just the same column... What is the point of using an aggregate on that at all? Perhaps it has some obscure meaning in Sybase, but it gives no meaning to me!&lt;br /&gt;&lt;br /&gt;Anyway, I rewrote the statements to what I believed they were meant to do; simply getting the latest date where the sum of amount was not zero:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;select @maxDate =&lt;br /&gt;isnull(max(sub.[Date]),0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;from&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;(select a.[Date] &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;from [TableA] a &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;group by a.[Date] &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;having sum(a.[Amount])!=0) sub&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If any Sybase gurus out there read this, please comment on this part!&lt;br /&gt;&lt;br /&gt;After importing user defined data types and defaults manually, the new script ran successfully on the Sql Server.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Migrating data content:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Another challenge! Some tables could not be converted because of casting problems, and others just dropped the connection to the Sybase server when trying to read from them. But luckily most tables migrated with no problems.&lt;br /&gt;&lt;br /&gt;For the tables that had casting problems, I decided to use Sql Server Integration Services (SSIS).&lt;br /&gt;&lt;br /&gt;The first problem was again to connect to the Sybase server. But after reading some tips on the web, I found that the way to do this was to create an ADO.NET connection that the DataReader could use, then configure the ADO.NET connection to use ODBC driver and point it to the ODBC DSN I already had created when trying to get a connection from the SSMA.&lt;br /&gt;&lt;br /&gt;After that it was rather easy to migrate table by table using a Data Reader source, a Data Conversion, and a SQL Server Destination.&lt;br /&gt;&lt;br /&gt;Then I was left with &lt;em&gt;five&lt;/em&gt; tables that could not be migrated. Every time I tried, the connection was dropped and I had to restart the Sybase service to be able to connect to it again.&lt;br /&gt;&lt;br /&gt;I thought there had to be something wrong with the source, so I logged into ISQL on the Sybase server and made a simple select * from the problem tables. And after a while it also dropped the connection with a read error, so I guess the tables were corrupt.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Conclusion:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Except from the five supposedly corrupt tables, I managed to migrate all objects and data from the Sybase v.11.9 database to Sql Server 2008, using SSMA and SSIS. So I guess I can call that a success, and&lt;br /&gt;&lt;strong&gt;Mission Accomplished!&lt;/strong&gt; :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7775527551184947725-3504830545410299744?l=dbgoby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dbgoby.blogspot.com/feeds/3504830545410299744/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7775527551184947725&amp;postID=3504830545410299744' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7775527551184947725/posts/default/3504830545410299744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7775527551184947725/posts/default/3504830545410299744'/><link rel='alternate' type='text/html' href='http://dbgoby.blogspot.com/2007/10/converting-from-sybase-to-sql-server.html' title='Migrating from Sybase to Sql Server'/><author><name>Øystein Sundsbø</name><uri>http://www.blogger.com/profile/12512328996609113838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7775527551184947725.post-4979788791578109038</id><published>2007-10-17T08:46:00.000+02:00</published><updated>2007-10-17T09:25:23.393+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='resources'/><category scheme='http://www.blogger.com/atom/ns#' term='links'/><title type='text'>Some useful resources</title><content type='html'>Today I want to share some links to useful resources that has helped me a lot.&lt;br /&gt;&lt;br /&gt;The first link I want to share with you, is to a web site called &lt;a href="http://www.sqlskills.com/"&gt;SQL Skills&lt;/a&gt;. The people behind the site have been very important resources for Microsoft and Sql Server. I'm sure most of you know &lt;a href="http://www.sqlskills.com/blogs/kimberly"&gt;Kimberly L. Tripp&lt;/a&gt; and &lt;a href="http://www.sqlskills.com/blogs/paul"&gt;Paul S. Randal&lt;/a&gt;. Be sure to visit their blogs! There is so much to learn there.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Next is a link to an MSDN article discussing &lt;a href="http://www.microsoft.com/technet/prodtechnol/sql/2005/physdbstor.mspx"&gt;Physical Database Storage Design&lt;/a&gt;. Useful information when designing databases!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://vyaskn.tripod.com/code.htm"&gt;My code library&lt;/a&gt; is a site I used to visit a lot earlier. It has a lot of fun code snippets, stored procedures, queries etc. The site hasn't been updated since November 2005, though, so it mainly has stuff for Sql Server 2000. But still it can work as a source of inspiration.&lt;/p&gt;&lt;p&gt;I'm a subscriber to the &lt;a href="http://www.sqlmag.com/"&gt;Sql Server Magazine&lt;/a&gt;. Nice articles, and fun exercises. &lt;/p&gt;&lt;p&gt;Cheers!&lt;/p&gt;&lt;p&gt;   -Øystein&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7775527551184947725-4979788791578109038?l=dbgoby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dbgoby.blogspot.com/feeds/4979788791578109038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7775527551184947725&amp;postID=4979788791578109038' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7775527551184947725/posts/default/4979788791578109038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7775527551184947725/posts/default/4979788791578109038'/><link rel='alternate' type='text/html' href='http://dbgoby.blogspot.com/2007/10/some-useful-resources.html' title='Some useful resources'/><author><name>Øystein Sundsbø</name><uri>http://www.blogger.com/profile/12512328996609113838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7775527551184947725.post-5361953992458428285</id><published>2007-10-16T18:17:00.001+02:00</published><updated>2007-10-16T19:51:18.521+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Estimate database size'/><category scheme='http://www.blogger.com/atom/ns#' term='DB Goby'/><category scheme='http://www.blogger.com/atom/ns#' term='Create insert scripts'/><category scheme='http://www.blogger.com/atom/ns#' term='Move database'/><category scheme='http://www.blogger.com/atom/ns#' term='Sql Server tool'/><title type='text'>DB Goby v.1.0</title><content type='html'>Well, here is a bit information about &lt;strong&gt;DB Goby v.1.0&lt;/strong&gt;:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;DB Goby is an application containing three tools:&lt;/div&gt;&lt;ol&gt;&lt;li&gt;A tool to create insert scripts from the content of a database&lt;/li&gt;&lt;li&gt;A tool to move data files to a new location&lt;/li&gt;&lt;li&gt;A tool to estimate disk requirements for a database.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;The application is built for Sql Server 2005, and Sql Server 2008. Some functions may work on Sql Server 2000/7.0, but many features don't support those versions. This is because the system views/tables are different, and require different queries. I might add support for 2000/7.0 later on.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Some information about the tools:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;As you probably guess, the &lt;em&gt;&lt;strong&gt;Create insert script&lt;/strong&gt;&lt;/em&gt; tool simply reads the content from one or several tables and creates insert scripts. ;-)&lt;/p&gt;&lt;img id="BLOGGER_PHOTO_ID_5121977133689272178" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_IyrEj5gAFaQ/RxTrENE493I/AAAAAAAAAVM/MBG47VuOcWk/s400/CreateInserts.JPG" border="0" /&gt;These scripts are useful when you are building one or several projects in a solution (i.e. using NAnt and/or CruiseControl etc), and deploying the solutions onto several development and test environments.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The tool should support all system data types, including LOBs.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The &lt;em&gt;&lt;strong&gt;Move database files&lt;/strong&gt; &lt;/em&gt;tool is good to have if you need to move a database with many filegroups and database files to a different location.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5121978082877044610" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_IyrEj5gAFaQ/RxTr7dE494I/AAAAAAAAAVU/zQ7FniN57X4/s400/MoveFiles.JPG" border="0" /&gt;The tool will set the database into single user mode, then put it offline, copy the files to the destination, reset the filepointers in the database, bring the database back online and set to multi user mode.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;It requires the use of extended stored procedures. So if the server has not extended stored procedures enabled due to security reasons, the tool will temporarily reconfigure the server while the operation is done, and then set it back to the original state.&lt;/p&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The &lt;strong&gt;&lt;em&gt;Estimate index sizes &lt;/em&gt;&lt;/strong&gt;tool will read the structure of the database and estimate how much disk space the indexes/tables will require. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5121978151596521362" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_IyrEj5gAFaQ/RxTr_dE495I/AAAAAAAAAVc/G5eHdfQuR6A/s400/Index.JPG" border="0" /&gt; &lt;div&gt;It is possible to change the values for the number of partitions, how many rows for each partition, variable column fill factor and LOB size for each table. By doing this you can estimate how much disk space you will need in a year or two, so you can plan for appropriate hardware in your production environment.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;The formulas to calculate the report are mainly based on the MSDN article "Estimating the Size of a Database": &lt;/div&gt;&lt;div&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms187445.aspx"&gt;http://msdn2.microsoft.com/en-us/library/ms187445.aspx&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;If you find this interesting and want to try my application, you can download it at:&lt;/div&gt;&lt;div&gt;&lt;a href="http://dbgoby.net/DBGobySetup.zip"&gt;&lt;strong&gt;http://dbgoby.net/DBGobySetup.zip&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;If you have feedback, requests for new features or bugs to report, please send me a comment or an email. You'll find contact information in the help file.&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;Enjoy! :)&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;-Øystein&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7775527551184947725-5361953992458428285?l=dbgoby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dbgoby.blogspot.com/feeds/5361953992458428285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7775527551184947725&amp;postID=5361953992458428285' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7775527551184947725/posts/default/5361953992458428285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7775527551184947725/posts/default/5361953992458428285'/><link rel='alternate' type='text/html' href='http://dbgoby.blogspot.com/2007/10/db-goby-v10.html' title='DB Goby v.1.0'/><author><name>Øystein Sundsbø</name><uri>http://www.blogger.com/profile/12512328996609113838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_IyrEj5gAFaQ/RxTrENE493I/AAAAAAAAAVM/MBG47VuOcWk/s72-c/CreateInserts.JPG' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7775527551184947725.post-8557558730134909788</id><published>2007-10-16T17:59:00.000+02:00</published><updated>2007-10-16T18:16:41.490+02:00</updated><title type='text'>Welcome</title><content type='html'>Hi, and welcome to my new blog!&lt;br /&gt;&lt;br /&gt;I guess I can start by telling a little about myself.&lt;br /&gt;&lt;br /&gt;I work as an advisor in a norwegian IT-company. I mostly develop applications using .NET and Sql Server. I have been DB admin in many of the development projects I have taken part in during the years, so I have grown a special love for the Sql Server, especially after version 2005 arrived.&lt;br /&gt;&lt;br /&gt;Even if Sql Server is a very good product, I have missed some features or tools to help me do the tasks I needed to do. Some help I've got from tools found on the web, but in some cases I've had to implement the tools I've been missing myself, in my leasure time.&lt;br /&gt;&lt;br /&gt;I've decided to publish a few of my tools so others can take pleasure of using them. So, that is why I've made this blog.&lt;br /&gt;&lt;br /&gt;Perhaps I'll get some feedback and ideas to improve my applications, too. :)&lt;br /&gt;&lt;br /&gt;At this point I've bundled together 3 tools into a small application, and you are all free to download it from my web site. It's freeware!&lt;br /&gt;&lt;br /&gt;You will get more information in my next blog post where I will tell you more about it in detail.&lt;br /&gt;&lt;br /&gt;Cheers!&lt;br /&gt;&lt;br /&gt;    -Øystein&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7775527551184947725-8557558730134909788?l=dbgoby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dbgoby.blogspot.com/feeds/8557558730134909788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7775527551184947725&amp;postID=8557558730134909788' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7775527551184947725/posts/default/8557558730134909788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7775527551184947725/posts/default/8557558730134909788'/><link rel='alternate' type='text/html' href='http://dbgoby.blogspot.com/2007/10/welcome.html' title='Welcome'/><author><name>Øystein Sundsbø</name><uri>http://www.blogger.com/profile/12512328996609113838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>
