Fråga : avkorta all användare bordlägger i en skrivar sqlserver 2000

Hi experter, jag behöver en skriva att avkorta all användare bordlägger. De har frågat mig för att kopiera prodcutiondben till en testaserver men de önskar att den ska tömma. Att vara kompetent att göra, att jag behöver en skriva som sammanslutningar finna av bordlägger, som hänvisas till, och det truncate av bordlägger. Vi använder sqlserver 2000. Jag har funnit denna skrivar på rengöringsduken för att få bordlägger, som hänvisas till, eller inte i en @r för database.
declare bordlägga (nvarchar
PK_TABLE (200), nvarchar
FK_TABLE (200),
primary stämm samla i en klunga (PK_TABLE, FK_TABLE))@rs för

declare bordlägger (nvarchar
PK_TABLE (200), nvarchar
FK_TABLE (200),
primary stämm samla i en klunga (PK_TABLE, FK_TABLE))@t för

declare bordlägger nvarchar (200) inte samla i en klunga ogiltigt primärt nyckel- (för
REF_LEVEL int, för
TABLE_NAME) @table

declare bordlägger nvarchar (200) inte samla i en klunga ogiltigt primärt nyckel- (för
TABLE_NAME) nocountoff

print för
set 'laddar bordlägger för databas

insert ”för +db_name () in i @table
select
TABLE_NAME = a.TABLE_SCHEMA+”. ”a
where
för +a.TABLE_NAME
from
INFORMATION_SCHEMA.TABLES a.TABLE_TYPE = ”BASERAR BORDLÄGGER” and
a.TABLE_SCHEMA+”. för <>'dbo.dtproperties'< ”'för +a.TABLE_NAME by
1

print för br/>order laddar PK-/FKreferences'
insert in i distinct
för @r
select PK_TABLE =
b.TABLE_SCHEMA+”. ”+b.TABLE_NAME,
FK_TABLE =
c.TABLE_SCHEMA+”. 'on
för b
för join
INFORMATION_SCHEMA.TABLE_CONSTRAINTS för a
för +c.TABLE_NAME
from
INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS a.CONSTRAINT_SCHEMA- = b.CONSTRAINT_SCHEMA-and
on
för c
för a.UNIQUE_CONSTRAINT_NAME- = för b.CONSTRAINT_NAME
join
INFORMATION_SCHEMA.TABLE_CONSTRAINTS a.CONSTRAINT_SCHEMA- = c.CONSTRAINT_SCHEMA-and
a.CONSTRAINT_NAME- = för c.CONSTRAINT_NAME
order by
1,2

print 'gör för att kopiera av PK-/FKreferences'
insert in i by
1,2

print för @r
order för *
from
för
för @rs
select 'laddar un-hänvisat till bordlägger som jämn 0 '
insert in i @t
select
REF_LEVEL = 0, in
för a
where
a.TABLE_NAME för
a.TABLE_NAME
from
@table inte (
väljer PK_TABLE från @runion all
vald FK_TABLE från @r
1

för
order för/>)-- valt * från @r
print 'ta bort självreferences'
delete från @r
where
@level för PK_TABLE- = FK_TABLE

declare @levelint
set = @level för 0

while < @level för begin
för 100
fastställd = @level + trycket 'borttagnings lower jämn borttagnings för references'< sombr/> från where
PK_TABLE för @r
i or
FK_TABLE för
för
(vald TABLE_NAME från @t) i tryck för

för
(vald TABLE_NAME från @t) 'laddar varchar jämn ”+convert ((20), @level) +” mellanlägget för tables'

in i =@level för select
REF_LEVEL för @t
, @table from
för 1

för
a.TABLE_NAME

för in
(vald TABLE_NAME för and
a.TABLE_NAME för
för in
(vald FK_TABLE för where
a.TABLE_NAME för a
inte från @r) inte från @t) beställer by
1

, om inte finns (valt * från @r)

select
REF_LEVEL för br level'print för end


print för end

för break
för
'bordlägger för levels'< för trycket 'för begin
för
gjort ladda '' för br/> för trycket räkningen av bordlägger vid '',
by
REF_LEVEL

print för by
REF_LEVEL
order för @t
group för
för
from för TABLE_COUNT = för räkningen (*) 'bordlägger beställer in vid jämnt och bordlägger name'
print ',Notera: Den ogiltiga REF_LEVEL-nayen indikerar möjligheten
select
b.REF_LEVEL,
för br reference'< cirkuläret/>print '' TABLE_NAME = a
som för
för
from för varchar omvänd ((40), a.TABLE_NAME) @table lämnas @tb
för join
på a.TABLE_NAME- = för b.TABLE_NAME
order by
b.REF_LEVEL,
select
b.REF_LEVEL för br Tables'print för
a.TABLE_NAME

print 'bordlägger, och hänvisa till '',
TABLE_NAME = den varchar omvänden ((40), a.TABLE_NAME), a
för
för
from för varchar =convert för
REFERENCING_TABLE ((40), c.FK_TABLE) @table lämnade @tb
för join
på a.TABLE_NAME = b.TABLE_NAME
som lämnades @rsc
/> på a.TABLE_NAME- = för c.PK_TABLE
order by
a.TABLE_NAME,
select
b.REF_LEVEL,
för br Referenced'print för
c.FK_TABLE


print 'bordlägger och bordlägger '' TABLE_NAME = den varchar omvänden ((40), a.TABLE_NAME),
@table a
lämnade @tb
för join
på a.TABLE_NAME = b.TABLE_NAME
som lämnades som @rsc
för join
på a.TABLE_NAME- = för c.FK_TABLE
order by
a.TABLE_NAME,
c.PK_TABLE
för
from för varchar =convert för
TABLE_REFERENCED ((40), c.PK_TABLE) " klar "

Svar : avkorta all användare bordlägger i en skrivar sqlserver 2000

Ja Microsoft är höger.

När den kommer till framtidsutsikt 2003, vi ska behov manuellt att konfigurera om profilera, om framtidsutsikten 2003 inte är kompetent att förbinda till brevlådan efter flyttningen.

Det finns bearbetar lik framtidsutsikt profilerar uppdateringen bearbetar, men den fungerar inte med utbytet 2010.

Andra lösningar  
 
programming4us programming4us