Avatar billede mccookie Seniormester
21. september 2018 - 14:23 Der er 2 kommentarer

Kør samme kommando på ALLE databaser på en SQL server

Hej,

Jeg har et meget lille SQL script som gør følgende:

if exists (Select * from EE where name = 'NAME')
BEGIN
Update EE SET EEdata ='

' where name ='NAME'

END
ELSE
BEGIN
INSERT INTO dbo.EE (Name) VALUES ('NAME')
END

Scriptet gør det som er tiltænkt! Tjekker om der findes en værdi svarende til name. Hvis ja, opdateres den og hvis nej, oprettes den..... bum....

Men jeg har et antal vilkårligt antal databaser på denne server....... og vil gerne køre scriptet på ALLE databaserne, som indeholder en tabel som hedder EE

Sidenhen kan jeg lave et planlagt job, som udfører opgave en gang dagligt.

Jeg har forsøgt mig lidt med Google, men har ikke lige ramt den rigtige kombination af kommandoer....

God weekend
Avatar billede Slettet bruger
21. september 2018 - 15:38 #1
lav dit program som en "stored procedure", så burde du ku
21. september 2018 - 20:33 #2
Du kan gøre sådan her:


--Vælg alle tabeller som hedder EE på tværs af databaser i en temp table
SET NOCOUNT ON
DECLARE @AllTables table (CompleteTableName nvarchar(4000))
INSERT INTO @AllTables (CompleteTableName)
    EXEC sp_msforeachdb 'select ''?''+''.''+s.name+''.''+t.name from [?].sys.tables t inner join sys.schemas s on t.schema_id=s.schema_id where t.Name =''ee'''
SET NOCOUNT OFF;


--Opret en cursor til at loope over hver tabel
DECLARE @TableName nvarchar(100)
DECLARE @Table nvarchar(100)
DECLARE @SQL nvarchar(max)
DECLARE myCursor CURSOR FOR
SELECT * FROM @AllTables

OPEN myCursor

FETCH NEXT FROM myCursor INTO @TableName
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT 'Cursor starter ' + @TableName

SET @SQL = 'if exists (Select * from '+@TableName+' where name = ''NAME'')
BEGIN
Update '+@TableName+' SET EEdata ='''' where name =''NAME''

END
ELSE
BEGIN
INSERT INTO '+@TableName+' (Name) VALUES (''NAME'')
END
'
PRINT @SQL
EXEC (@SQL)




FETCH NEXT FROM myCursor INTO @TableName
END
CLOSE myCursor
DEALLOCATE myCursor
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester