jump to navigation

Πως να καλείτε sql scripts από άλλο sql script October 8, 2007

Posted by fofo in Sql Server.
trackback

Κάποια στιγμή χρειάστηκα να “καλέσω” 3 sql scripts από ένα άλλο sql script.


Χρησιμοποιώ SQL Server 2005.

Υπάρχουν 2 τρόποι

Ο πρώτος είναι να καλείς τα scripts ένα ένα και ο δεύτερος να καλείς τα sql scripts από ένα φάκελο.
πρώτο βήμα είναι να θέσουμε στον sql server να δέχεται “xp_cmdshell” εντολές

**************************************


GO
EXEC sp_configure ‘show advanced options’, 1
GO
RECONFIGURE WITH OVERRIDE
GO
EXEC sp_configure ‘xp_cmdshell’, 1
GO
RECONFIGURE WITH OVERRIDE
GO
EXEC sp_configure ‘show advanced options’, 0
GO

αν έχουμε τα sql scripts σε ένα φάκελο C:\Documents and Settings\All Users\Documents\sql server\myscripts

Και ονομάζονται

mysql1.sql

mysql2.sql

mysql3.sql Ο πρώτος τρόπος είναι να καλέσουμε τα scripts ένα ένα.

EXEC master..XP_CMDShell ‘osql -E -i C:\Documents and Settings\All Users\Documents\sql server\myscripts\mysql1.sql’


EXEC master..XP_CMDShell ‘osql -E -i
C:\Documents and Settings\All Users\Documents\sql server\myscripts\mysql2.sql’


EXEC master..XP_CMDShell ‘osql -E -i
C:\Documents and Settings\All Users\Documents\sql server\myscripts\mysql3.sql’

αν θέλουμε να καλέσουμε τα scripts μέσα από τον φάκελο που τα περιέχει.

CREATE TABLE ##myFiles ( SQLFileName VARCHAR(2000))
GO

INSERT INTO ##myFiles
EXECUTE master.dbo.xp_cmdshell ‘dir /b “
C:\Documents and Settings\All Users\Documents\sql server\myscripts\*.sql”‘
GO

DECLARE cFiles CURSOR LOCAL FOR
SELECT DISTINCT [SQLFileName]
FROM ##myFiles
WHERE [SQLFileName] IS NOT NULL AND
[SQLFileName] != ‘NULL’
ORDER BY [SQLFileName]

DECLARE @vFileName VARCHAR(200)
DECLARE @vSQLStmt VARCHAR(4000)
OPEN cFiles

FETCH NEXT FROM cFiles INTO @vFileName
WHILE @@FETCH_STATUS = 0
BEGIN
SET @vSQLStmt = ‘master.dbo.xp_cmdshell ”osql -E -i “
C:\Documents and Settings\All Users\Documents\sql server\myscripts\’ + @vFileName + ‘””’
EXECUTE (@vSQLStmt)

FETCH NEXT FROM cFiles INTO @vFileName
END

CLOSE cFiles
DEALLOCATE cFiles
GO
DROP TABLE ##myFiles
GO

Comments»

No comments yet — be the first.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: