Looks like up until SQL Server 2000 there was an undocumented command DBCC CHECKDBTS
that did exactly what you want but it is no more. It looks like it is stored on the database boot page with no (safe, see below) way of manually setting it.
I'm not sure why you want to do this and I suggest that you don't bother but if you must then you will likely find set based inserts considerably quicker.
(NB: The below might need tweaking to avoid overshooting the target as I found that @@DBTS
incremented by 1003921
for each million row insert but should be an improvement...)
CREATE TABLE __DUMMY (I TINYINT, TS TIMESTAMP)
DECLARE @Target INT, @Batch INT
SET @Target = 666666666
WHILE @Target > CONVERT(INT, @@DBTS)
BEGIN
RAISERROR ('@@DBTS = %d',0,1,@@DBTS) WITH NOWAIT;
SET @Batch = @Target - CONVERT(INT, @@DBTS);
IF @Batch > 1000000
SET @Batch = 1000000;
WITH E00(N) AS (SELECT 1 UNION ALL SELECT 1),
E02(N) AS (SELECT 1 FROM E00 a, E00 b),
E04(N) AS (SELECT 1 FROM E02 a, E02 b),
E08(N) AS (SELECT 1 FROM E04 a, E04 b),
E16(N) AS (SELECT 1 FROM E08 a, E08 b),
E32(N) AS (SELECT 1 FROM E16 a, E16 b),
cteTally(N) AS (SELECT ROW_NUMBER() OVER (ORDER BY N) FROM E32)
INSERT INTO __DUMMY (I)
SELECT 1
FROM cteTally
WHERE N <= @Batch;
TRUNCATE TABLE __DUMMY
END
DROP TABLE __DUMMY
Or alternatively if this is only a development database, you have backups and you aren't going to come complaining to me if it all goes wrong you could do some experimenting with the undocumented and highly warned against DBCC WRITEPAGE
command.
USE tempdb;
IF DB_ID('TestDBTS') IS NOT NULL
DROP DATABASE TestDBTS;
CREATE DATABASE TestDBTS;
USE TestDBTS;
DBCC WRITEPAGE(TestDBTS, 1, 9, 412, 8, 0xAA86BC2700000000);
ALTER DATABASE TestDBTS SET OFFLINE WITH ROLLBACK IMMEDIATE;
ALTER DATABASE TestDBTS SET ONLINE WITH ROLLBACK IMMEDIATE;
USE TestDBTS;
SELECT @@DBTS;
DBCC TRACEON (3604);
DBCC DBINFO ('TestDBTS');
DBCC TRACEOFF (3604);
You've already I assume, applied the registry fix suggested by Microsoft.
Since they are saying that this has been resolved since SP1, have you considered installing a newer version of SQL Server 2008 R2 Express?
http://www.microsoft.com/en-us/download/details.aspx?id=26729
Update 12:27
Based on what you're saying and without having your system in front of me, I'd try to find out if the evaluation edition you think you removed might actually still be there.
You can run the SQL Server features discovery report to find out what components are actually installed on your laptop.
Start -> All Programs -> SQL Server 2008 -> Configuration Tools -> SQL Server Installation Center. Then on the left you select Tools, and then click on the Installed SQL Server features discovery report.
Installation Center - Tools
Features Report
I would also go Control Panel, Uninstall Programs, and make sure there wasn't anything left over from the evaluation edition. Once you're absolutely sure that evaluation is gone, reboot the system just to make sure that the registry is reloaded correctly.
Best Answer
This is more of a
NET USE
question than a SSMS/SQL Server question.NET USE has the syntax:
So, I would expect your command to look like this: