Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 osql из приложения  [new]
papuas
Member

Откуда: Юго-Восток Туманного Острова
Сообщений: 504
Здравствуйте!

Я использую утилиту osql для выполнения скриптов. Когдя я делаю это руками, то есть запускаю cmd, пишу там osql и параметры - все работает отлично. Когда я пытаюсь запустить это из приложения, я получаю ошибку
автор
[SQL Native Client]SSL Provider: The Local Security Authority cannot be
contacted
[SQL Native Client]Client unable to establish connection

Команда, которую я пытаюсь выполнить из приложения, отлично работает, если я просто копирую ее из дебугера и выполняю из командной строки. Пытался погуглить, но не очень много нашел понятного. Может кто-то может подсказать?
Вот на всякий случай код из си шарпа:

using (Process proc = new Process())
				{
					proc.StartInfo.FileName = "osql";
					string strArgs = string.Format("/S {0} /d {1}", strServerName, strDBName);
					if (!bIntegratedSecurity)
						strArgs = string.Format("{0} /U {1} /P {2}", strArgs, strUserName, strPassword);
					else
						strArgs = string.Format("{0} /E", strArgs);
					proc.StartInfo.Arguments = string.Format("{0} /i {1}", 
						strArgs, strFilePath);
					proc.StartInfo.UseShellExecute = false;
					proc.StartInfo.RedirectStandardOutput = true;
					proc.StartInfo.RedirectStandardError = true;
					proc.StartInfo.CreateNoWindow = true;
					try
					{
						proc.Start();
						proc.WaitForExit();
						strMessage = proc.StandardOutput.ReadToEnd();
						proc.Close();
					}
					catch
					{
						strMessage = "The script can not be executed. Make sure there is osql utility on the server.";
					}
				}
30 июл 09, 13:59    [7479089]     Ответить | Цитировать Сообщить модератору
 Re: osql из приложения  [new]
Mikle83
Member

Откуда: Санкт-Петербург
Сообщений: 629
Попробуйте в качестве приложения запользовать CMD, т.е.

proc.StartInfo.FileName = "cmd";

а вот как параметр приложения - строку запуска osql
т.е. прям строку "osql /S....."
30 июл 09, 14:02    [7479105]     Ответить | Цитировать Сообщить модератору
 Re: osql из приложения  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
автор
[SQL Native Client]SSL Provider: The Local Security Authority cannot be
contacted


Используете шифрование протокола? Что у Вас за приложение? Под какой учеткой ОС запускаете?
30 июл 09, 14:17    [7479225]     Ответить | Цитировать Сообщить модератору
 Re: osql из приложения  [new]
papuas
Member

Откуда: Юго-Восток Туманного Острова
Сообщений: 504
автор
Попробуйте в качестве приложения запользовать CMD, т.е.

proc.StartInfo.FileName = "cmd";

спасибо, но:
так до бесконечности можно ждать будет proc.WaitForExit();
и как считывать proc.StandardOutput.ReadToEnd();?


Используете шифрование протокола? Что у Вас за приложение? Под какой учеткой ОС запускаете?


У меня веб приложения, шифрования никакого нет, просто http://localhost/execsql.aspx. На всякий случай дал сейчас пользователю, под которым работает приложение, права администратора. Та же картина.
30 июл 09, 14:29    [7479331]     Ответить | Цитировать Сообщить модератору
 Re: osql из приложения  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
автор
шифрования никакого нет,


А вот натив клиент в ошибке говорит о другом.

автор
У меня веб приложения...На всякий случай дал сейчас пользователю, под которым работает приложение, права администратора.


Как IIS подключается к SQL Server?
30 июл 09, 14:36    [7479407]     Ответить | Цитировать Сообщить модератору
 Re: osql из приложения  [new]
papuas
Member

Откуда: Юго-Восток Туманного Острова
Сообщений: 504
pkarklin
автор
шифрования никакого нет,


А вот натив клиент в ошибке говорит о другом.

автор
У меня веб приложения...На всякий случай дал сейчас пользователю, под которым работает приложение, права администратора.


Как IIS подключается к SQL Server?


я вот тоже удивляюсь, почему натив клиент говорит о другом.

в каком смысле как IIS подключается к SQL? Я не пытаюсь подключить IIS к SQL Server вообще, поэтому и использую osql. Или я не так понял вопрос?
30 июл 09, 15:12    [7479717]     Ответить | Цитировать Сообщить модератору
 Re: osql из приложения  [new]
Glory
Member

Откуда:
Сообщений: 104760
papuas
Или я не так понял вопрос?

Чем, где и под какой учетной записью запускается ваш "код из си шарпа" ?
30 июл 09, 15:17    [7479755]     Ответить | Цитировать Сообщить модератору
 Re: osql из приложения  [new]
borin
Member

Откуда: angarsk/msk
Сообщений: 677
как вариант (мне помог) - написать из двух строчек vbs-ник. который запускает osql
и уже из-под своего аппликэйшына пускать ентот vbs.

выглядит у меня он как-то так:
osqlstarter.vbs:
set wshshell=wscript.createobject("wscript.shell")
wshshell.run "osql -S . -U sa -P -d mydb -Q ""exec my storedproc"" ",0
30 июл 09, 15:19    [7479767]     Ответить | Цитировать Сообщить модератору
 Re: osql из приложения  [new]
borin
Member

Откуда: angarsk/msk
Сообщений: 677
borin
как вариант (мне помог) - написать из двух строчек vbs-ник. который запускает osql
и уже из-под своего аппликэйшына пускать ентот vbs.

выглядит у меня он как-то так:
osqlstarter.vbs:
set wshshell=wscript.createobject("wscript.shell")
wshshell.run "osql -S . -U sa -P -d mydb -Q ""exec my storedproc"" ",0


конечно, можно и bat-ник вместо vbs-нега но он тогда мелькать черным окношком будет, людей пугать :-)
30 июл 09, 15:21    [7479781]     Ответить | Цитировать Сообщить модератору
 Re: osql из приложения  [new]
papuas
Member

Откуда: Юго-Восток Туманного Острова
Сообщений: 504
Glory
papuas
Или я не так понял вопрос?

Чем, где и под какой учетной записью запускается ваш "код из си шарпа" ?


Используется веб приложение, на одной из страниц которого запускается этот код. Веб сайт работает на локальном компьютере на IIS. Виртуальная директория запускается под пользователем, который имеет права администратора.
Насколько я понимаю, у пользователя, под которым работает веб-сайт, должны быть права на запуск osql, и этого должно быть достаточно? Потому что osql дальше сам отправит логин и пароль на подключение. Это, конечно, в случае, если приложение снабжает osql этими данными. В случае Inegrated Security должно быть по-другому. Но у меня не работает и первый случай то же. То есть osql вызывается с параметрами -P и -U и не работает :(
30 июл 09, 15:35    [7479859]     Ответить | Цитировать Сообщить модератору
 Re: osql из приложения  [new]
papuas
Member

Откуда: Юго-Восток Туманного Острова
Сообщений: 504
borin,

большое спасибо, но хотелось бы разобраться, почему не работает так как я пытаюсь сделать :)
30 июл 09, 15:36    [7479874]     Ответить | Цитировать Сообщить модератору
 Re: osql из приложения  [new]
Mikle83
Member

Откуда: Санкт-Петербург
Сообщений: 629
papuas
так до бесконечности можно ждать будет proc.WaitForExit();
и как считывать proc.StandardOutput.ReadToEnd();?

Запускайте cmd /cApplication.exe
и WaitForExit у вас выбьет в момент закрытия приложения Application.exe
30 июл 09, 15:46    [7479959]     Ответить | Цитировать Сообщить модератору
 Re: osql из приложения  [new]
papuas
Member

Откуда: Юго-Восток Туманного Острова
Сообщений: 504
Mikle83
papuas
так до бесконечности можно ждать будет proc.WaitForExit();
и как считывать proc.StandardOutput.ReadToEnd();?

Запускайте cmd /cApplication.exe
и WaitForExit у вас выбьет в момент закрытия приложения Application.exe


спасибо! так сработало! :)
30 июл 09, 15:53    [7480021]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить