istediğim viewin create ddl ni alma

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
kaank
Üye
Mesajlar: 31
Kayıt: 01 Oca 2008 10:58

istediğim viewin create ddl ni alma

Mesaj gönderen kaank »

Merhabalar bir önceki açtığım konuda viewlerin sıralamasını arkadaşların yardımıyla çözdüm ancak programımdan istediğim viewin, tablonun procedurun create DDL ini almak istiyorum

nasıl yapabilirim? şimdiden teşekkürler
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: istediğim viewin create ddl ni alma

Mesaj gönderen sabanakman »

Bu kodlar syscomments tablosunda text alanında bulunmaktadır. Mesela bir veri tabanına ait viewların kodlarını aşağıdaki sorgu ile direkt alabilirsiniz.

Kod: Tümünü seç

select obj.name, kod.text from syscomments as kod
left join sysobjects as obj on obj.id=kod.id
where obj.xtype='V' and not obj.name in ('syssegments','sysconstraints')
order by obj.id
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
kaank
Üye
Mesajlar: 31
Kayıt: 01 Oca 2008 10:58

Re: istediğim viewin create ddl ni alma

Mesaj gönderen kaank »

Arkadaşım allah senden razı olsun...
Çok teşekkür ederim saygılarımla
kaank
Üye
Mesajlar: 31
Kayıt: 01 Oca 2008 10:58

Re: istediğim viewin create ddl ni alma

Mesaj gönderen kaank »

Kod: Tümünü seç

/****** Object:  StoredProcedure [dbo].[ETSScript]    Script Date: 12/08/2009 10:38:05 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[ETSScript] 
	@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(4,"' + @ScriptFile + '")'
EXEC @hr = sp_OAMethod @object, @CmdStr
EXEC @hr = sp_OADestroy @object

GO


scripti ile istediğiniz procedure,table,view,index,database create ini alabilirisiniz bu sorunla karşılacak olan arkadaşlara yardımım dokunsun istediğim yoğun araştırmalar sırasında bulduğum güzel bir script

yukarıdaki Script(4, değerini 5 yaparsanız if not exists bloğunu koyuyor ama bunu koyarsanız viewleri create edemezsiniz 4 olarak kullanmanız en mantıklısı

iyi çalışmalar dilerim
Cevapla