sonra sadece xp_cmdshell kullanarak T-SQL komut dosyası almak gerekiyorsa.
DECLARE @OUTPUT TABLE (line nvarchar(max))
DECLARE @cmd VARCHAR(8000), @ps VARCHAR(8000), @psLoadAssemblies VARCHAR(8000), @script nvarchar(max) =''
DECLARE @srv nvarchar(max)='<server name>',
@ln nvarchar(max)='<login>',
@pw nvarchar(max)='<password>',
@db nvarchar(max) = '<database>',
@schemaName nvarchar(max) = '<schema>', -- without '[' ']'
@viewName nvarchar(max) = '<view name>', -- without '[' ']'
@indexName nvarchar(max) = '<index name>' -- without '[' ']'
SET @psLoadAssemblies = '[System.Reflection.Assembly]::LoadWithPartialName(''Microsoft.SqlServer.SMO'')|Out-Null;'
SET @ps='$using=''Microsoft.SqlServer.Management.Smo'';$s=new-object($using+''.Server'') $srv;$c = $s.ConnectionContext;$c.LoginSecure=$false;$c.Login=$ln;$c.Password=$pw; Write-Host ($s.Databases[$db].Views.Item($viewName,$schemaName).Indexes[$indexName].Script())'
SET @ps=REPLACE(@ps,'$srv',''''[email protected]+'''')
SET @ps=REPLACE(@ps,'$ln',''''[email protected]+'''')
SET @ps=REPLACE(@ps,'$pw',''''[email protected]+'''')
SET @ps=REPLACE(@ps,'$db',''''[email protected]+'''')
SET @ps=REPLACE(@ps,'$schemaName',''''[email protected]+'''')
SET @ps=REPLACE(@ps,'$viewName',''''[email protected]+'''')
SET @ps=REPLACE(@ps,'$indexName',''''[email protected]+'''')
SET @cmd = 'powershell -Command "'[email protected][email protected]+'"'
exec dev.Msg @cmd
INSERT INTO @OUTPUT
exec xp_cmdshell @cmd
SELECT @script+line FROM @OUTPUT
WHERE line is not null
PRINT @script
Dip not: SMO ve powershell (sonuç @script değişkende, sen Sp_executesql ile yürütebilir) ile somut olarak görünümün somut olarak endeksini scripting Örneğin Neden böyle hilelere ihtiyaç duyabileceğimizi soranlar için: bazı senaryolarda, ör. "üçüncü taraf aracını kullanarak verileri içe aktar", "bırak-yeniden oluştur" yaklaşımı, "etkinleştir-devre dışı bırak" nesnelerinden daha iyi çalışır; Bu tür üçüncü parti aracı "kırpmak" diyebileceğinden ve tablonuz şemaya bağlı görünüme katılırsa, üçüncü taraf bir araç hatası alırsınız (indeksli görünümlere katılan kısaltma masası bir hata atar, bu nedenle görünümü tüm dizinler ile birlikte bırakmak zorunda kalırız ithalattan önce ve sonra yeniden oluşturun).
Bunu bir komut dosyasından yapmak istiyorum. Mysql'de her tablo için "tablo örneği oluşturabilirim" ifadesini kullanırdım. – tomsv