Как стать автором
Обновить

Комментарии 10

А есть ли какая-нибудь возможность создать скрипт из базы на shared хостинге?
Если честно, не понял вопрос, мало данных. Отвечаю насколько понял. Если у вас есть доступ к этой БД, нет возможности подключения к ней с помощью SQL Server Management Studio, чтобы сгенерировать скрипты мастером, но есть возможность обращаться к INFORMATION_SCHEMA, то вы, в принципе, и «вручную» можете себе все объекты заскриптовать. Если же доступа к INFORMATION_SCHEMA и системным представлениям типа sys.tables нет — то увы.
Спасибо. Да, как раз такая ситуация. Только хотелось бы не совсем «вручную». Наверняка уже есть готовые скрипты (тулзы), возвращающие полную структуру в виде sql скрипта. Может кто встречал?
Для скриптования почти всего, кроме таблиц можно использовать системную процедуру sp_helptext. С таблицами сложнее — встроенных средств нет, встречались самописные скрипты, но все они были немного криво написаны — приходилось дописывать под себя.
Может ли чем-то помочь профилирование в момент создания скрипта мастером?
В какой ситуации нет возможности подключения с помощью SQL Server Management Studio? Я могу придумать только ситуацию, когда удаленные подключения запрещены, а локально не установлена студия. Но в данном случае должны быть библиотеки, например SMO. Можно попытаться использовать их
Вот пример использования на Powershell:
Cls [System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO')| out-null $s = new-object ('Microsoft.SqlServer.Management.Smo.Server') "servername" #$s.ConnectionContext.set_LoginSecure($FALSE) #$s.ConnectionContext.set_EncryptConnection($FALSE) #$s.ConnectionContext.set_Login("login") #$s.ConnectionContext.set_Password("pass") foreach ($item in $s.Databases["DBName"].Tables["TableName"].Indexes) #StoredProcedures { if (!$item.IsSystemObject) { $str = $item.Script() $str } }
Если это невозможно, то интересно было бы услышать причину.
Вот более читабельный вариант
Cls
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO')| out-null
$s = new-object ('Microsoft.SqlServer.Management.Smo.Server') "servername" 

#$s.ConnectionContext.set_LoginSecure($FALSE)
#$s.ConnectionContext.set_EncryptConnection($FALSE)
#$s.ConnectionContext.set_Login("login")
#$s.ConnectionContext.set_Password("pass")
foreach ($item in $s.Databases["DBName"].Tables["TableName"].Indexes) #StoredProcedures 
  { 
    if (!$item.IsSystemObject)
    {
        $str = $item.Script()
        $str 
    }


Must have…
В свое время восстановил базу 1с (файл журнала LDF повредился) Причем этот горе-сис админ бекапил мета базу 1с, а бекап от SQL он не делал.
SAN — это, конечно, не система хранения данных, а сеть хранения данных.

Ещё сам автор неправильно пишет про Data Domain. DD — это устройство хранения резервных копий, собственной интеграции с MS SQL Server у него нет, только через ПО управления РК (NetWorker, Avamar, NetBackup, BackupExec).

В остальном статья очень хорошая.
SAN — это, конечно, не система хранения данных, а сеть хранения данных

Мне об этом писали в личку, но я не стал исправлять. В России такие вендоры как EMC, HP и NetApp на официальных ресурсах используют форму «системы хранения данных». Мне она в таком виде нравится больше.
Хотя вопрос не принципиальный, поэтому пусть будет «сеть/система».
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории