NOVOTS KMS ´Ê»ã±í Glossary    ÁªÏµÎÒÃÇ Contact Us
²éѯ Search  
   
°´Àà±ðä¯ÀÀ Browse by Category
NOVOTS KMS .: Êý¾Ý¿â .: Sql ServerʵÓòÙ×÷С¼¼Çɼ¯ºÏ

Sql ServerʵÓòÙ×÷С¼¼Çɼ¯ºÏ

£¨Ò»£©¹ÒÆð²Ù×÷
ÔÚ°²×°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


ÕâÆªÎÄÕ¶ÔÄã¶àÓÐÓã¿

Ïà¹ØÎÄÕÂ

article dz̸ÈçºÎÓÅ»¯SQL ServerË÷Òý
¹ØÓÚË÷ÒýµÄ³£Ê¶...

(No rating)  7-31-2006    Views: 1476   
article Æô¶¯SQL Serverʱ×Ô¶¯Ö´Ðд洢¹ý³Ì
ÈçºÎÔÚÆô¶¯SQL SERVERµÄʱºò£¬Ö´ÐÐÒ»¸ö´æ´¢¹ý³Ì£¿...

(No rating)  1-24-2007    Views: 1478   
article ÓÅ»¯SQL ServerË÷Òý
Ë÷ÒýµÄÀàÐÍÈç¹ûcolumn±£´æÁ˸߶ÈÏà¹ØµÄÊý¾Ý£¬²¢ÇÒ³...

(No rating)  3-1-2010    Views: 1040   

Óû§ÆÀÓï

Ìí¼ÓÆÀÓï
µ±Ç°»¹Ã»ÓÐÆÀÓï.


.: .: .: .: .:
[ 怫 ]
±±¾©»¤º½¿Æ¼¼ÓÐÏÞ¹«Ë¾ 2006

Novots Technologies Limited