Julius
Дата: 15.12.2002 08:40:02
Скорее всего придется генерировать DDL самостоятельно, на основании данных о таблицах, колонках, индексах и ограничениях
Glory
Дата: 16.12.2002 10:07:21
Другой способ ? - Пожалуйста.
В SQL-DMO у многих объектов имеется метод Script. который "generates a Transact-SQL command batch that can be used to re-create the Microsoft® SQL Server™ component referenced by the SQL-DMO object."
Конретно для вашей задачи(dobavleniya novoy tablizi v "PARTITION VIEW") можно создать DTS Package из двух шагов
- ActiveX Script, который через SQL-DMO сгенерирует DDL скрипт
- Execute SQL Task, который данный скрипт выполнит
Salik
Дата: 16.12.2002 11:05:12
Glory ,mne kajetsya vash variant o4en horoshim.
Tolko moya problema ya ne o4en znayu VB Script i SQL-DMO ,ne mogli bi vi viru4it: Nebolshim primer4ikom kak sdelat eti dba stepa v DTS ?
- ActiveX Script, который через SQL-DMO сгенерирует DDL скрипт
- Execute SQL Task, который данный скрипт выполнит
Zaranee blagodaren .
NX
Дата: 16.12.2002 12:03:49
CREATE PROCEDURE sp_ScriptProcedures @Database SYSNAME, @Path VARCHAR(500)
AS
/* сохранение процедур
@Database - имя базы
@Path - куда класть скрипты
*/
DECLARE
@SQL INT, -- SQL сервер
@SP INT, -- хранимые процедуры
@i INT, @j INT, @s VARCHAR(200), @k INT, @l SYSNAME,
@ERROR INT, -- код ошибки
@Source VARCHAR, @Description VARCHAR -- описание ошибки
EXEC @ERROR = sp_OACreate 'SQLDMO.SQLServer', @SQL OUT
IF @ERROR<>0
BEGIN
EXEC sp_OAGetErrorInfo @SQL, @Source OUT, @Description OUT
PRINT ISNULL(@Source,'')+', '+ ISNULL(@Description,'')
END
-- использовать Windows authentication
EXEC sp_OASetProperty @SQL, 'LoginSecure ', 'TRUE'
EXEC sp_OAMethod @SQL, 'Connect(".")'
-- получить в @SP коллекцию процедур
SET @s='Databases("'+@Database+'").StoredProcedures'
EXEC sp_OAGetProperty @SQL, @s, @SP OUT
SET @s='Databases("'+@Database+'").StoredProcedures.Count'
EXEC sp_OAGetProperty @SQL, @s, @j OUT
SET @i=1
WHILE @i<=@j
BEGIN
SET @s='Item(' +LTRIM(STR(@i))+ ').Name'
EXEC sp_OAGetProperty @SP, @s, @l OUT -- имя процедуры
SET @s='Item(' +LTRIM(STR(@i))+ ').Script(266343,"'+@Path+@l+'.sql",2)'
EXEC sp_OAMethod @SP, @s, @k OUT
SET @i=@i+1
END
EXEC sp_OADestroy @SQL
IF @ERROR<>0
BEGIN
EXEC sp_OAGetErrorInfo @SQL, @Source OUT, @Description OUT
PRINT ISNULL(@Source,'')+', '+ ISNULL(@Description,'')
END
Glory
Дата: 16.12.2002 12:42:26
ActiveX Script, который через SQL-DMO сгенерирует DDL скрипт что-то вроде такого
Set oSQLDMO = Createobject("SQLDMO.SQLServer")
If Not IsNull(oSQLDMO) Then
oSQLDMO.LoginSecure = True
If IsEmpty(oSQLDMO.Connect("MYSERVER")) Then
If Not IsEmpty(oSQLDMO.Databases("pubs").Tables("authors").Script(4, "c:\xx.txt", "mytable3")) Then
End if
oSQLDMO.Disconnect()
oSQLDMO.Close()
End if
End if
Set oSQLDMO = Nothing |
|
Далее с помощью Dynamic Properties Task "загружаем" полученный скрипт в Execute SQL Task.
PS
- Полное описание первого аргумента метода Script есть в BOL.
- Можно использовать метод, предложенный NX-ом, но он все же несколько более трудоемкий.
Salik
Дата: 16.12.2002 13:02:38
Spasibo poprobuyu oba methoda
Vopros k NX:
-- использовать Windows authentication
EXEC sp_OASetProperty @SQL, 'LoginSecure ', 'TRUE'
EXEC sp_OAMethod @SQL, 'Connect(".")'
A kak bit esli ispolzuetsya SQL authentication ??
Vopros k Glory:
Nado li v vashem scripte 4to to izmenit esli ispolzuetsya SQL authentication ?
Eshe raz vsem spasibo ,budu probovat .