£¨Ò»£©¹ÒÆð²Ù×÷
ÔÚ°²×°Sql»òsp²¹¶¡µÄʱºòϵͳÌáʾ֮ǰÓÐ¹ÒÆðµÄ°²×°²Ù×÷£¬ÒªÇóÖØÆô£¬ÕâÀïÍùÍùÖØÆôÎÞÓ㬽â¾ö°ì·¨£º
µ½HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
ɾ³ýPendingFileRenameOperations
£¨¶þ£©ÊÕËõÊý¾Ý¿â
--ÖØ½¨Ë÷Òý
DBCC REINDEX
DBCC INDEXDEFRAG
--ÊÕËõÊý¾ÝºÍÈÕÖ¾
DBCC SHRINKDB
DBCC SHRINKFILE
£¨Èý£©Ñ¹ËõÊý¾Ý¿â
dbcc shrinkdatabase(dbname)
£¨ËÄ£©×ªÒÆÊý¾Ý¿â¸øÐÂÓû§ÒÔÒÑ´æÔÚÓû§È¨ÏÞ
exec sp_change_users_login 'update_one','newname','oldname'
go
£¨Î壩¼ì²é±¸·Ý¼¯
RESTORE VERIFYONLY from disk='E:\dvbbs.bak'
£¨Áù£©ÐÞ¸´Êý¾Ý¿â
ALTER DATABASE [dvbbs] SET SINGLE_USER
GO
DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK
GO
ALTER DATABASE [dvbbs] SET MULTI_USER
GO
--CHECKDB ÓÐ3¸ö²ÎÊý:
--REPAIR_ALLOW_DATA_LOSS
-- Ö´ÐÐÓÉ REPAIR_REBUILD Íê³ÉµÄËùÓÐÐÞ¸´£¬°üÀ¨¶ÔÐкÍÒ³½øÐзÖÅäºÍÈ¡Ïû·ÖÅäÒÔ¸ÄÕý·ÖÅä´íÎ󡢽ṹÐлòÒ³µÄ´íÎó£¬ÒÔ¼°É¾³ýÒÑË𻵵ÄÎı¾¶ÔÏó¡£ÕâЩÐÞ¸´¿ÉÄܻᵼÖÂһЩÊý¾Ý¶ªÊ§¡£ÐÞ¸´²Ù×÷¿ÉÒÔÔÚÓû§ÊÂÎñÏÂÍê³ÉÒÔÔÊÐíÓû§»Ø¹öËù×öµÄ¸ü¸Ä¡£Èç¹û»Ø¹öÐÞ¸´£¬ÔòÊý¾Ý¿âÈԻẬÓдíÎó£¬Ó¦¸Ã´Ó±¸·Ý½øÐлָ´¡£Èç¹ûÓÉÓÚËùÌṩÐÞ¸´µÈ¼¶µÄÔµ¹ÊÒÅ©ij¸ö´íÎóµÄÐÞ¸´£¬Ôò½«ÒÅ©ÈκÎÈ¡¾öÓÚ¸ÃÐÞ¸´µÄÐÞ¸´¡£ÐÞ¸´Íê³Éºó£¬±¸·ÝÊý¾Ý¿â¡£
--REPAIR_FAST ½øÐÐСµÄ¡¢²»ºÄʱµÄÐÞ¸´²Ù×÷£¬ÈçÐÞ¸´·Ç¾Û¼¯Ë÷ÒýÖеĸ½¼Ó¼ü¡£ÕâЩÐÞ¸´¿ÉÒԺܿìÍê³É£¬²¢ÇÒ²»»áÓжªÊ§Êý¾ÝµÄΣÏÕ¡£
--REPAIR_REBUILD Ö´ÐÐÓÉ REPAIR_FAST Íê³ÉµÄËùÓÐÐÞ¸´£¬°üÀ¨ÐèÒª½Ï³¤Ê±¼äµÄÐÞ¸´£¨ÈçÖØ½¨Ë÷Òý£©¡£Ö´ÐÐÕâЩÐÞ¸´Ê±²»»áÓжªÊ§Êý¾ÝµÄΣÏÕ¡£
--DBCC CHECKDB('dvbbs') with NO_INFOMSGS,PHYSICAL_ONLY
SQL SERVERÈÕÖ¾Çå³ýµÄÁ½ÖÖ·½·¨
ÔÚʹÓùý³ÌÖдó¼Ò¾³£Åöµ½Êý¾Ý¿âÈÕÖ¾·Ç³£´óµÄÇé¿ö£¬ÔÚÕâÀï½éÉÜÁËÁ½ÖÖ´¦Àí·½·¨¡¡
·½·¨Ò»
Ò»°ãÇé¿öÏ£¬SQLÊý¾Ý¿âµÄÊÕËõ²¢²»Äܴܺó³Ì¶ÈÉϼõСÊý¾Ý¿â´óС£¬ÆäÖ÷Òª×÷ÓÃÊÇÊÕËõÈÕÖ¾´óС£¬Ó¦µ±¶¨ÆÚ½øÐд˲Ù×÷ÒÔÃâÊý¾Ý¿âÈÕÖ¾¹ý´ó
1¡¢ÉèÖÃÊý¾Ý¿âģʽΪ¼òµ¥Ä£Ê½£º´ò¿ªSQLÆóÒµ¹ÜÀíÆ÷£¬ÔÚ¿ØÖÆÌ¨¸ùĿ¼ÖÐÒÀ´Îµã¿ªMicrosoft SQL Server-->SQL Server×é-->Ë«»÷´ò¿ªÄãµÄ·þÎñÆ÷-->Ë«»÷´ò¿ªÊý¾Ý¿âĿ¼-->Ñ¡ÔñÄãµÄÊý¾Ý¿âÃû³Æ£¨ÈçÂÛ̳Êý¾Ý¿âForum£©-->È»ºóµã»÷ÓÒ¼üÑ¡ÔñÊôÐÔ-->Ñ¡ÔñÑ¡Ïî-->ÔÚ¹ÊÕÏ»¹ÔµÄģʽÖÐÑ¡Ôñ¡°¼òµ¥¡±£¬È»ºó°´È·¶¨±£´æ
2¡¢ÔÚµ±Ç°Êý¾Ý¿âÉϵãÓÒ¼ü£¬¿´ËùÓÐÈÎÎñÖеÄÊÕËõÊý¾Ý¿â£¬Ò»°ãÀïÃæµÄĬÈÏÉèÖò»Óõ÷Õû£¬Ö±½ÓµãÈ·¶¨
3¡¢ÊÕËõÊý¾Ý¿âÍê³Éºó£¬½¨Ò齫ÄúµÄÊý¾Ý¿âÊôÐÔÖØÐÂÉèÖÃΪ±ê׼ģʽ£¬²Ù×÷·½·¨Í¬µÚÒ»µã£¬ÒòΪÈÕÖ¾ÔÚһЩÒì³£Çé¿öÏÂÍùÍùÊǻָ´Êý¾Ý¿âµÄÖØÒªÒÀ¾Ý
·½·¨¶þ
SET NOCOUNT ON
DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
@NewSize INT
USE tablename -- Òª²Ù×÷µÄÊý¾Ý¿âÃû
SELECT @LogicalFileName = 'tablename_log', -- ÈÕÖ¾ÎļþÃû
@MaxMinutes = 10, -- Limit on time allowed to wrap log.
@NewSize = 1 -- ÄãÏëÉ趨µÄÈÕÖ¾ÎļþµÄ´óС(M)
-- Setup / initialize
DECLARE @OriginalSize int
SELECT @OriginalSize = size
FROM sysfiles
WHERE name = @LogicalFileName
SELECT 'Original Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' +
CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'
FROM sysfiles
WHERE name = @LogicalFileName
CREATE TABLE DummyTrans
(DummyColumn char (8000) not null)
DECLARE @Counter INT,
@StartTime DATETIME,
@TruncLog VARCHAR(255)
SELECT @StartTime = GETDATE(),
@TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'
DBCC SHRINKFILE (@LogicalFileName, @NewSize)
EXEC (@TruncLog)
-- Wrap the log if necessary.
WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired
AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)
AND (@OriginalSize * 8 /1024) > @NewSize
BEGIN -- Outer loop.
SELECT @Counter = 0
WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))
BEGIN -- update
INSERT DummyTrans VALUES ('Fill Log')
DELETE DummyTrans
SELECT @Counter = @Counter + 1
END
EXEC (@TruncLog)
END
SELECT 'Final Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),size) + ' 8K pages or ' +
CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'
FROM sysfiles
WHERE name = @LogicalFileName
DROP TABLE DummyTrans
SET NOCOUNT OFF
ɾ³ýÊý¾Ý¿âÖÐÖØ¸´Êý¾ÝµÄ¼¸¸ö·½·¨
Êý¾Ý¿âµÄʹÓùý³ÌÖÐÓÉÓÚ³ÌÐò·½ÃæµÄÎÊÌâÓÐʱºò»áÅöµ½Öظ´Êý¾Ý£¬Öظ´Êý¾Ýµ¼ÖÂÁËÊý¾Ý¿â²¿·ÖÉèÖò»ÄÜÕýÈ·ÉèÖá¡
·½·¨Ò»
declare @max integer,@id integer
declare cur_rows cursor local for select Ö÷×Ö¶Î,count(*) from ±íÃû group by Ö÷×Ö¶Î having count(*) > 1
open cur_rows
fetch cur_rows into @id,@max
while @@fetch_status=0
begin
select @max = @max -1
set rowcount @max
delete from ±íÃû where Ö÷×Ö¶Î = @id
fetch cur_rows into @id,@max
end
close cur_rows
set rowcount 0
·½·¨¶þ
ÓÐÁ½¸öÒâÒåÉϵÄÖØ¸´¼Ç¼£¬Ò»ÊÇÍêÈ«ÖØ¸´µÄ¼Ç¼£¬Ò²¼´ËùÓÐ×ֶξùÖØ¸´µÄ¼Ç¼£¬¶þÊDz¿·Ö¹Ø¼ü×Ö¶ÎÖØ¸´µÄ¼Ç¼£¬±ÈÈçName×Ö¶ÎÖØ¸´£¬¶øÆäËû×ֶβ»Ò»¶¨Öظ´»ò¶¼Öظ´¿ÉÒÔºöÂÔ¡£
1¡¢¶ÔÓÚµÚÒ»ÖÖÖØ¸´£¬±È½ÏÈÝÒ×½â¾ö£¬Ê¹ÓÃ
select distinct * from tableName
¾Í¿ÉÒԵõ½ÎÞÖØ¸´¼Ç¼µÄ½á¹û¼¯¡£
Èç¹û¸Ã±íÐèҪɾ³ýÖØ¸´µÄ¼Ç¼£¨Öظ´¼Ç¼±£Áô1Ìõ£©£¬¿ÉÒÔ°´ÒÔÏ·½·¨É¾³ý
select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp
·¢ÉúÕâÖÖÖØ¸´µÄÔÒòÊDZíÉè¼Æ²»ÖܲúÉúµÄ£¬Ôö¼ÓΨһË÷ÒýÁм´¿É½â¾ö¡£
2¡¢ÕâÀàÖØ¸´ÎÊÌâͨ³£ÒªÇó±£ÁôÖØ¸´¼Ç¼ÖеĵÚÒ»Ìõ¼Ç¼£¬²Ù×÷·½·¨ÈçÏÂ
¼ÙÉèÓÐÖØ¸´µÄ×Ö¶ÎΪName,Address£¬ÒªÇóµÃµ½ÕâÁ½¸ö×Ö¶ÎΨһµÄ½á¹û¼¯
select identity(int,1,1) as autoID, * into #Tmp from tableName
select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID
select * from #Tmp where autoID in(select autoID from #tmp2)
×îºóÒ»¸öselect¼´µÃµ½ÁËName£¬Address²»Öظ´µÄ½á¹û¼¯£¨µ«¶àÁËÒ»¸öautoID×ֶΣ¬Êµ¼Êдʱ¿ÉÒÔдÔÚselect×Ó¾äÖÐʡȥ´ËÁУ©
¸ü¸ÄÊý¾Ý¿âÖбíµÄËùÊôÓû§µÄÁ½¸ö·½·¨
´ó¼Ò¿ÉÄܻᾳ£Åöµ½Ò»¸öÊý¾Ý¿â±¸·Ý»¹Ôµ½ÁíÍâһ̨»úÆ÷½á¹ûµ¼ÖÂËùÓÐµÄ±í¶¼²»ÄÜ´ò¿ªÁË£¬ÔÒòÊǽ¨±íµÄʱºò²ÉÓÃÁ˵±Ê±µÄÊý¾Ý¿âÓû§¡¡
--¸ü¸Äij¸ö±í
exec sp_changeobjectowner 'tablename','dbo'
--´æ´¢¸ü¸ÄÈ«²¿±í
CREATE PROCEDURE dbo.User_ChangeObjectOwnerBatch
@OldOwner as NVARCHAR(128),
@NewOwner as NVARCHAR(128)
AS
DECLARE @Name as NVARCHAR(128)
DECLARE @Owner as NVARCHAR(128)
DECLARE @OwnerName as NVARCHAR(128)
DECLARE curObject CURSOR FOR
select 'Name' = name,
'Owner' = user_name(uid)
from sysobjects
where user_name(uid)=@OldOwner
order by name
OPEN curObject
FETCH NEXT FROM curObject INTO @Name, @Owner
WHILE(@@FETCH_STATUS=0)
BEGIN
if @Owner=@OldOwner
begin
set @OwnerName = @OldOwner + '.' + rtrim(@Name)
exec sp_changeobjectowner @OwnerName, @NewOwner
end
-- select @name,@NewOwner,@OldOwner
FETCH NEXT FROM curObject INTO @Name, @Owner
END
close curObject
deallocate curObject
GO
SQL SERVERÖÐÖ±½ÓÑ»·Ð´ÈëÊý¾Ý
ûʲôºÃ˵µÄÁË£¬´ó¼Ò×Ô¼º¿´£¬ÓÐʱºòÓеãÓô¦
declare @i int
set @i=1
while @i<30
begin
insert into test (userid) values(@i)
set @i=@i+1
end