YetAnotherForum
სალამი სტუმარს ძებნა | აქტიური თემები | შესვლა | რეგისტრაცია

ფავორიტებში დამატება
ინდექსების გადატანა primary file group-დან secondary file group-ში
vajaGM Offline
#1 Posted : Saturday, October 15, 2011 4:36:24 AM

Rank: Administration

Medals:

Groups: Administrators
Joined: 10/20/2012
Posts: 106
Points: 327
Location: Tbilisi

Thanks: 0 times
Was thanked: 0 time(s) in 0 post(s)
-- გამოირიცხება კლასტერული ინდექსები, სტატისტიკა და primary key-სთან ასოცირებული ინდექსები


BB კოდი:

declare @id integer
declare @tbname nvarchar(100)
declare @indid integer
declare @indname nvarchar(100)
declare @fill integer = 90 -- 90% FillFactor
declare @group integer
declare @list nvarchar(4000)
declare @strsql nvarchar(4000)
DECLARE @ROWCNT INTEGER = 700000000 -- სტრიქონების მაქსიმაული რაოდენობა
DECLARE @DEBUG INTEGER = 1
DECLARE @FileGroupName nvarchar (100) = 'IndexFileGroup' -- ახალი File Group-ის სახელი

declare curs1 cursor for
SELECT     TOP 100 PERCENT dbo.sysobjects.id,dbo.sysobjects.name,dbo.sysindexes.indid, dbo.sysindexes.name AS indname, @fill as OrigFillFactor, --dbo.sysindexes.OrigFillFactor,
                      dbo.sysindexes.groupid
FROM         dbo.sysindexes INNER JOIN
                      dbo.sysobjects ON dbo.sysindexes.id = dbo.sysobjects.id
WHERE     (dbo.sysobjects.xtype = 'U') AND (dbo.sysindexes.indid BETWEEN 2 AND 254) and (sysindexes.status & 64) = 0 and (not(sysindexes.status & 0x800)=0x800)  and sysindexes.groupid=1 AND SYSINDEXES.ROWCNT<=@ROWCNT
ORDER BY dbo.sysobjects.name, dbo.sysindexes.indid

open curs1
fetch next from curs1 into @id,@tbname,@indid,@indname,@fill,@group
while @@fetch_status=0
begin

set @list=''
SELECT      @List = @List +  '['+ dbo.syscolumns.name+'],'
FROM         dbo.sysindexes INNER JOIN
                      dbo.sysobjects ON dbo.sysindexes.id = dbo.sysobjects.id INNER JOIN
                      dbo.sysindexkeys ON dbo.sysindexes.id = dbo.sysindexkeys.id AND dbo.sysindexes.indid = dbo.sysindexkeys.indid INNER JOIN
                      dbo.syscolumns ON dbo.sysindexkeys.id = dbo.syscolumns.id AND dbo.sysindexkeys.colid = dbo.syscolumns.colid
WHERE     (dbo.sysobjects.xtype = 'U') AND (dbo.sysindexes.indid =@indid) AND (dbo.sysobjects.id = @id) and (sysindexes.status & 64) = 0 and (not(sysindexes.status & 0x800)=0x800)  and sysindexes.groupid=1 AND SYSINDEXES.ROWCNT<=@ROWCNT
ORDER BY dbo.sysobjects.name, dbo.sysindexes.indid, dbo.sysindexkeys.keyno
set  @list=left(@list,len(@list)-1)
    begin
        set @strsql='drop index ['+@tbname+'].['+@indname+']'
        print @strsql
        IF @DEBUG=0
        BEGIN
            exec sp_executesql @strsql
        END
        set @strsql='CREATE  INDEX ['+@indname+'] ON [dbo].['+@tbname+']('+@list+') WITH  FILLFACTOR = '+convert(nvarchar(5),@fill)+' ON ['+@FileGroupName+']'
        print @strsql
        IF @DEBUG=0
        BEGIN
            exec sp_executesql @strsql
        END
    end
fetch next from curs1 into @id,@tbname,@indid,@indname,@fill,@group
end
close curs1
deallocate curs1

ქუოტა (Quote):
Sponsor  
 
Apex ltd. http://www.apex.ge
Users browsing this topic
Guest
ფავორიტებში დამატება
Forum Jump  
თქვენ არ შეგიძლიათ დაწეროთ ახალი თემა ამ ფორუმში.
თქვენ არ შეგიძლიათ გასცეთ პასუხი, თემას, ამ ფორუმში .
თქვენ არ შეგიძლიათ წაშალოთ თქვენი პოსტი ამ ფორუმში.
თქვენ არ შეგიძლიათ ჩაასწოროთ თქვენი პოსტი ამ ფორუმში.
თქვენ არ შეგიძლიათ შექმნათ გამოკითხვა ამ ფორუმში.
თქვენ არ შეგიძლიათ ხმის მიცემა ამ ფოუმში.

YAFVision Theme by Jaben Cargman (Tiny Gecko)
Powered by YAF | YAF © 2003-2009, Yet Another Forum.NET
This page was generated in 0.065 seconds.