none
Запись во внешний файл RRS feed

  • Вопрос

  • Данный код применим в SSMSEE? На MSSQL

    DECLARE @result int
    
    EXEC @result = master..xp_cmdshell 'osql -S MYSQLSERVER -E -Q "SELECT TOP 10 * FROM pubs.dbo.authors" -b -o c:\myoutput.txt', no_output
    IF (@result = 0)
       PRINT 'Success'
    ELSE
       PRINT 'Failure'
    4 марта 2010 г. 1:51

Ответы

Все ответы

  • Да, но лучше использовать не OSQL, а SQLCMD


    http://www.t-sql.ru
    4 марта 2010 г. 3:34
    Отвечающий
  • Где его взять?

    4 марта 2010 г. 3:39
  • Где его взять?


    Он идёт в поставке с вашим сервером БД по умолчанию, начиная с версии 2005
    http://www.t-sql.ru
    4 марта 2010 г. 3:40
    Отвечающий
  • ясно, у меня 2000... если качнуть 2005, снести 2000 и установить 2005 с БД проблем никаких не будет?
    4 марта 2010 г. 4:04
  • ясно, у меня 2000... если качнуть 2005, снести 2000 и установить 2005 с БД проблем никаких не будет?

    Вы уверены, что у вас 2000ый? Что вернёт запрос:

    select @@version
    ?
    http://www.t-sql.ru
    4 марта 2010 г. 4:09
    Отвечающий
  • Уверен

    Microsoft SQL Server  2000 - 8.00.760 (Intel X86)   Dec 17 2002 14:22:05   Copyright (c) 1988-2003 Microsoft Corporation  Desktop Engine on Windows NT 5.2 (Build 3790: Service Pack 2)
    4 марта 2010 г. 4:18
  • Уверен

    Microsoft SQL Server  2000 - 8.00.760 (Intel X86)   Dec 17 2002 14:22:05   Copyright (c) 1988-2003 Microsoft Corporation  Desktop Engine on Windows NT 5.2 (Build 3790: Service Pack 2)

    Тогда код, который вы привели в самом начале, как раз под него.

    По поводу обновления сервера БД до 2005 или 2008 ого, то вам не нужно ничего сносить, достаточно обновиться через специальный инструмент, который входит в поставку с дистрибутивом SQL Server 2005/2008. Так же есть утилиты для анализа на сколько ваши БД "готовы" к миграции на более новую версию, где будут указаны ряд мероприятий, которые вам потребуются для корректного обновления
    http://www.t-sql.ru
    4 марта 2010 г. 4:27
    Отвечающий
  • Простите за возможно совсем идиотский вопрос, но я не понимаю строку

    EXEC @result = master..xp_cmdshell 'osql -S MYSQLSERVER -E -Q "SELECT TOP 10 * FROM pubs.dbo.authors" -b -o c:\myoutput.txt', no_output

    В данной строке нужно менять MYSQLSERVER на MSSQLSERVER, если я использую MSSQL
    И о чём говорит символ "@", когда он используется?

    4 марта 2010 г. 6:48
  • Простите за возможно совсем идиотский вопрос, но я не понимаю строку

    EXEC @result = master..xp_cmdshell 'osql -S MYSQLSERVER -E -Q "SELECT TOP 10 * FROM pubs.dbo.authors" -b -o c:\myoutput.txt', no_output

    В данной строке нужно менять MYSQLSERVER на MSSQLSERVER, если я использую MSSQL
    И о чём говорит символ "@", когда он используется?


    @ обозначаются переменные, например:
    declare @i int
    set @i=1
    select @i

    MYSQLSERVER-В данном случаи имя вашего SQL Server`a например (local)-если локальный
    http://www.t-sql.ru
    4 марта 2010 г. 7:05
    Отвечающий
  • MYSQLSERVER-В данном случаи имя вашего SQL Server`a например (local)-если локальный
    А как его посмотреть у себя?

    Вместо SELECT TOP 10 можно вставить SELECT ?

    FROM pubs.dbo.authors имя таблицы(вьюхи) обязательно на английском языке?
    4 марта 2010 г. 7:16
  • MYSQLSERVER-В данном случаи имя вашего SQL Server`a например (local)-если локальный
    А как его посмотреть у себя?

    Вместо SELECT TOP 10 можно вставить SELECT ?

    FROM pubs.dbo.authors имя таблицы(вьюхи) обязательно на английском языке?

    1) select @@servername
    2) да, top 10 - это вывести 10 записей, если вам нужен весь набор, то ТОП не нужен
    3) FROM ... вместо многоточия указываете имя вашей таблицы/вьюхи...если у вас это русское название, то естественно на русском
    http://www.t-sql.ru
    4 марта 2010 г. 7:31
    Отвечающий
  • DECLARE @result int
    
    EXEC @result = master..xp_cmdshell 'osql -S MYSQLSERVER -E -Q "SELECT TOP 10 * FROM pubs.dbo.authors" -b -o c:\myoutput.txt', no_output
    IF (@result = 0)
       PRINT 'Success'
    ELSE
       PRINT 'Failure'

    вместо MYSQLSERVER вставил имя сервера, вместо * - поле вьюхи, вместо pubs.dbo.authors - имя вьюхи. SSMSEE говорит что запрос успешно выполнен, однако в результате пишет Failure и файл на с:\ не создаёт...
    4 марта 2010 г. 7:55
  • а вы уверены, что корректно указываете пар-ры подключения и контекст БД при работе с утилитой osql ?
    серез cmd попробуйте сперва поработать с osql, и уже после этого используйте xp_cmdshell
    http://www.t-sql.ru
    4 марта 2010 г. 7:59
    Отвечающий
  • серез cmd попробуйте сперва поработать с osql, и уже после этого используйте xp_cmdshell
    то есть? я вообще сижу за клиетской машиной и физического доступа к серверу у меня нет. На сколько я понимаю, утилита osql (понятие не имею что это) находится в корневом каталоге MS SQL на сервере
    4 марта 2010 г. 8:05
  • серез cmd попробуйте сперва поработать с osql, и уже после этого используйте xp_cmdshell
    то есть? я вообще сижу за клиетской машиной и физического доступа к серверу у меня нет. На сколько я понимаю, утилита osql (понятие не имею что это) находится в корневом каталоге MS SQL на сервере

    osql - это утилита (командная строка) через которую вы можете работать с сервером БД, она идёт в комплекте с клиентскими утилитами, вы на раб. машине через какого клиента работаете? тулзы из какого дистрибутива ставились?
    http://www.t-sql.ru
    4 марта 2010 г. 8:09
    Отвечающий
  • тулзы из какого дистрибутива ставились?
    отдельно скачивал SSMSEE и отдельно EMS SQL Manager 2008 for SQL Server. затем через них, имея админ права подцеплялся к БД на сервере...

    Через  EMS SQL Manager 2008 for SQL Server писал запросы, через SSMSEE выводил результат в .txt
    4 марта 2010 г. 8:19
  • тулзы из какого дистрибутива ставились?
    отдельно скачивал SSMSEE и отдельно EMS SQL Manager 2008 for SQL Server. затем через них, имея админ права подцеплялся к БД на сервере...

    тогда у вас в комплекте с SSMS есть и комндная строка SQLCMD - это новый, по сравнению с osql, клиент командной строки для работы с серверами БД. Через него можете подцепиться и выполнить нужный вам скрипт, подробно о пар-ах можно прочитать тут: http://technet.microsoft.com/ru-ru/library/ms162773.aspx

    и ещё, скрипт который вы запускаете создаёт на выходе файл не на вашей рабочей станции, а на сервере...
    http://www.t-sql.ru
    4 марта 2010 г. 8:24
    Отвечающий
  • подробно о пар-ах можно прочитать тут: http://technet.microsoft.com/ru-ru/library/ms162773.aspx
    Спасибо, почитаю...
    При удачном выполнении скрипта в SSMSEE во вкладке "результат" должно быть Success?
    4 марта 2010 г. 8:31
  • подробно о пар-ах можно прочитать тут: http://technet.microsoft.com/ru-ru/library/ms162773.aspx
    Спасибо, почитаю...
    При удачном выполнении скрипта в SSMSEE во вкладке "результат" должно быть Success?

    да
    http://www.t-sql.ru
    4 марта 2010 г. 8:38
    Отвечающий