RoostaYeBekr
سه شنبه 09 تیر 1388, 15:14 عصر
سلام
من مي خوام از ديتابيسمون كه كلي Table داره ، فقط ساختارش را بگيرم و نه ديتاهايش را . از SQL.Server 2005 استفاده مي كنم و ضمنا نمي خواهم كه به دليل تعدد Table ها ، يكي يكي روي آنها كليك كنم و بعد ساختار آن Table را بگيرم . منظور اينكه از طريق select to نمي خواهم اين كار را كنم.
با كدنويسي ، چه طوري مي توان گفت كه مثلا ساختار تمام Table هاي مربوط به ديتابيس فلان را بده ؟
مرسي.
AminSobati
سه شنبه 09 تیر 1388, 18:34 عصر
http://www.databasejournal.com/features/mssql/article.php/2205291/Generate-Scripts-for-SQL-Server-Objects.htm
RoostaYeBekr
چهارشنبه 10 تیر 1388, 08:42 صبح
http://www.databasejournal.com/features/mssql/article.php/2205291/Generate-Scripts-for-SQL-Server-Objects.htm
حالا اگر ديگران هم خواستند از مطلب آقاي ثباتي استفاده كنند ، اول ديتابيسي كه فرستادم ، بردارند.
بعد اول Procedure زير را بسازند:
CREATE PROCEDURE proc_genscript
@ServerName varchar(30),
@DBName varchar(30),
@ObjectName varchar(50),
@ObjectType varchar(10),
@TableName varchar(50),
@ScriptFile varchar(255)
AS
DECLARE @CmdStr varchar(255)
DECLARE @object int
DECLARE @hr int
SET NOCOUNT ON
SET @CmdStr = 'Connect('+@ServerName+')'
EXEC @hr = sp_OACreate 'SQLDMO.SQLServer', @object OUT
--Comment out for standard login
EXEC @hr = sp_OASetProperty @object, 'LoginSecure', TRUE
/* Uncomment for Standard Login
EXEC @hr = sp_OASetProperty @object, 'Login', 'sa'
EXEC @hr = sp_OASetProperty @object, 'password', 'sapassword'
*/
EXEC @hr = sp_OAMethod @object,@CmdStr
SET @CmdStr =
CASE @ObjectType
WHEN 'Database' THEN 'Databases("'
WHEN 'Procedure' THEN 'Databases("' + @DBName + '").StoredProcedures("'
WHEN 'View' THEN 'Databases("' + @DBName + '").Views("'
WHEN 'Table' THEN 'Databases("' + @DBName + '").Tables("'
WHEN 'Index' THEN 'Databases("' + @DBName + '").Tables("' + @TableName + '").Indexes("'
WHEN 'Trigger' THEN 'Databases("' + @DBName + '").Tables("' + @TableName + '").Triggers("'
WHEN 'Key' THEN 'Databases("' + @DBName + '").Tables("' + @TableName + '").Keys("'
WHEN 'Check' THEN 'Databases("' + @DBName + '").Tables("' + @TableName + '").Checks("'
WHEN 'Job' THEN 'Jobserver.Jobs("'
END
SET @CmdStr = @CmdStr + @ObjectName + '").Script(5,"' + @ScriptFile + '")'
EXEC @hr = sp_OAMethod @object, @CmdStr
EXEC @hr = sp_OADestroy @object
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
بعد از اينكه ساختند ، حالا مقدار دهي كرده و ساختار مورد نظر را بدست آورند :
مثلا :
exec proc_genscript
@ServerName = 'AHMADI',
@DBName = 'DB_for_Test',
@ObjectName = 'Table2',
@ObjectType = 'Table',
@TableName = 'Table2',
@ScriptFile = 'd:\pubs.sql'
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.