Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: Импорт курсов валют  [new]
Yuraz.com
Member

Откуда:
Сообщений: 802
buser
Чуток уточню ссылку вот оно

Люди, у кого сегодня эта ссылка работает? У меня не открывает целый день. :(
Еще вопрос, есть ли что то похожее в других банках (Внешэкономбанк и т.п.)
20 дек 04, 16:42    [1194240]     Ответить | Цитировать Сообщить модератору
 Re: Импорт курсов валют  [new]
superbluesman
Member

Откуда:
Сообщений: 1017
Там и справочник валюты я разместил:
https://www.sql.ru/forum/actualthread.aspx?tid=145807
20 дек 04, 17:01    [1194318]     Ответить | Цитировать Сообщить модератору
 Re: Импорт курсов валют  [new]
sraider
Member

Откуда:
Сообщений: 325
Alex_NF
Люди, неужели никому не нужно знать курс бакса и евра на сегодня? И, естественно, иметь его у себя в БД. Если кто-нибудь знает, как это сделать на T-SQL, поделитесь плз! Можно даже одного бакса.


я делал утилитку на Access'е для закачки курсов с сайта ЦБ на SQL Server... можно ее вешать в шедулер, чтобы она каждое утро грузила курс.

статья
утилитка
20 дек 04, 17:45    [1194555]     Ответить | Цитировать Сообщить модератору
 Re: Импорт курсов валют  [new]
Yuraz.com
Member

Откуда:
Сообщений: 802
sraider
Спасибо за утилитку, мне под MSSQL, здесь уже код встречался..
20 дек 04, 18:29    [1194729]     Ответить | Цитировать Сообщить модератору
 Re: Импорт курсов валют  [new]
Полина
Member

Откуда: Петербург
Сообщений: 205
PA
Вот пример для USD:
declare @xmlString varchar(8000)
declare @val_1 datetime
declare @val_2 datetime
declare @url varchar(255)

select @val_2 = GetDate()
select @val_1 = DateAdd(day,1-Day(@val_2), @val_2)

select @url = 'http://www.cbr.ru/scripts/XML_dynamic.asp?date_req1='+
	Convert(char(10), @val_1, 103)+'&date_req2='+
	Convert(char(10), @val_2, 103)+'&VAL_NM_RQ=R01235'

exec LoadXMLFromFile 
	@url, 
	@xmlString output

declare @h int

exec sp_xml_preparedocument  @h output, @xmlString

select 
	[Date], 
	Nominal, 
	Convert(money, replace(Value, ',', '.')) 'Value'
from 
	OpenXML (@h, '//Record', 0)
with 
(
	[Date] char(10) '@Date',
	Nominal int './Nominal',
	Value varchar(10) './Value'
)

exec sp_xml_removedocument @h

Текст LoadXMLFromFile(где-то в инете попалась):
CREATE PROCEDURE LoadXMLFromFile
(
	@tcFileName		VARCHAR(255),
	@tcXMLString	VARCHAR(8000) OUTPUT
) AS
BEGIN
	-- Scratch variables used in the script
	DECLARE @retVal INT
	DECLARE @oXML INT
	DECLARE @errorSource VARCHAR(8000)
	DECLARE @errorDescription VARCHAR(8000)
	DECLARE @loadRetVal INT

	-- Initialize the XML document
	EXEC @retVal = sp_OACreate 'MSXML2.DOMDocument', @oXML OUTPUT
	IF (@retVal <> 0)
	BEGIN
		-- Trap errors if any
		EXEC sp_OAGetErrorInfo @oXML, @errorSource OUTPUT, @errorDescription OUTPUT
		RAISERROR (@errorDescription, 16, 1)

		-- Release the reference to the COM object
		EXEC sp_OADestroy @oXML
		RETURN
	END

	EXEC @retVal = sp_OASetProperty @oXML, 'async', 0
	IF @retVal <> 0
	BEGIN
 		-- Trap errors if any
		EXEC sp_OAGetErrorInfo @oXML, @errorSource OUTPUT, @errorDescription OUTPUT
		RAISERROR (@errorDescription, 16, 1)

		-- Release the reference to the COM object
		EXEC sp_OADestroy @oXML
		RETURN
	END

	-- Load the XML into the document
	EXEC @retVal = sp_OAMethod @oXML, 'load', @loadRetVal OUTPUT, @tcFileName
	IF (@retVal <> 0)
	BEGIN
		-- Trap errors if any
		EXEC sp_OAGetErrorInfo @oXML, @errorSource OUTPUT, @errorDescription OUTPUT
		RAISERROR (@errorDescription, 16, 1)

		-- Release the reference to the COM object
		EXEC sp_OADestroy @oXML
		RETURN
	END

	-- Get the loaded XML
	EXEC @retVal = sp_OAMethod @oXML, 'xml', @tcXMLString OUTPUT
	IF (@retVal <> 0)
	BEGIN
		-- Trap errors if any
		EXEC sp_OAGetErrorInfo @oXML, @errorSource OUTPUT, @errorDescription OUTPUT
		RAISERROR (@errorDescription, 16, 1)

		-- Release the reference to the COM object
		EXEC sp_OADestroy @oXML
		RETURN
	END

	-- Release the reference to the COM object
	EXEC sp_OADestroy @oXML

END


подскажите плз если процедура LoadXMLFromFile не работает, в чем может быть причина? У меня SQL 2000, может на него что-то доставить надо чтобы он распознавал xml? Процедура работает без ошибок, но возвращает пустой tcXMLString, забирая корректный url.
1 мар 05, 13:07    [1352394]     Ответить | Цитировать Сообщить модератору
 Re: Импорт курсов валют  [new]
tt12
Member

Откуда: Ленинград
Сообщений: 86
Может у sql сервера (его рабочей учетной записи) нет доступа в интернет?
1 мар 05, 13:23    [1352501]     Ответить | Цитировать Сообщить модератору
 Re: Импорт курсов валют  [new]
Полина
Member

Откуда: Петербург
Сообщений: 205
tt12
Может у sql сервера (его рабочей учетной записи) нет доступа в интернет?

А как это проверить? У нас доступ в инет по ip адресу компа и на том компе на котором sql живет интернет открыт
1 мар 05, 13:30    [1352542]     Ответить | Цитировать Сообщить модератору
 Re: Импорт курсов валют  [new]
tt12
Member

Откуда: Ленинград
Сообщений: 86
На SQL сервере под учетной записью, с которой он работает, выйдите через броузер в итнернет, зайдите на сайт с курсами.
1 мар 05, 13:35    [1352572]     Ответить | Цитировать Сообщить модератору
 Re: Импорт курсов валют  [new]
Полина
Member

Откуда: Петербург
Сообщений: 205
tt12
На SQL сервере под учетной записью, с которой он работает, выйдите через броузер в итнернет, зайдите на сайт с курсами.

У меня учетные записи на базы SQL и входа в сеть разные (SQL - sa, сеть - user и домен Office). На сервер с SQL я попадаю с уч записью user, могу открыть интернет, зайти на любой сайт. Сетевой уч записи sa у меня нет. Я уже думаю может есть какие-то обновления для того чтобы сервер работал с XML?
1 мар 05, 13:47    [1352632]     Ответить | Цитировать Сообщить модератору
 Re: Импорт курсов валют  [new]
tt12
Member

Откуда: Ленинград
Сообщений: 86
Для вашей задачи сервис операционной системы "MSSQLSERVER" должен стартовать под учетной записью Windows, имеющей доступ в интернет на нужный сайт. Попробуйте прочитать средствами tsql копию странички с курсами разместив ее в локальной сети.
1 мар 05, 14:07    [1352735]     Ответить | Цитировать Сообщить модератору
 Re: Импорт курсов валют  [new]
Полина
Member

Откуда: Петербург
Сообщений: 205
tt12
Для вашей задачи сервис операционной системы "MSSQLSERVER" должен стартовать под учетной записью Windows, имеющей доступ в интернет на нужный сайт. Попробуйте прочитать средствами tsql копию странички с курсами разместив ее в локальной сети.

Это работает, на серверном компе страничку сохранила из окошка explorer'a, в котором тоже все без проблемм открылось. А напрямую не соединяет через инет.... :-(((
1 мар 05, 14:27    [1352825]     Ответить | Цитировать Сообщить модератору
 Re: Импорт курсов валют  [new]
Glory
Member

Откуда:
Сообщений: 104760
-- Load the XML into the document
EXEC @retVal = sp_OAMethod @oXML, 'load', @loadRetVal OUTPUT, @tcFileName
IF (@retVal <> 0)
BEGIN

А где проверка статуса завершения метода load ?

А напрямую не соединяет через инет.... :-(((
Под какой учетной записью стартует сервис MSSQLSERVER ?
1 мар 05, 15:10    [1353083]     Ответить | Цитировать Сообщить модератору
 Re: Импорт курсов валют  [new]
Полина
Member

Откуда: Петербург
Сообщений: 205
Glory
-- Load the XML into the document
EXEC @retVal = sp_OAMethod @oXML, 'load', @loadRetVal OUTPUT, @tcFileName
IF (@retVal <> 0)
BEGIN

А где проверка статуса завершения метода load ?

А напрямую не соединяет через инет.... :-(((
Под какой учетной записью стартует сервис MSSQLSERVER ?


Стоит галка "с системной учетной записью", т.е как я понимаю по умолчанию это имя user, с которым я вхожу в сеть. Или не так? Я после этого запустив IE вижу сайт с курсами валют, а сервер нет.
1 мар 05, 16:07    [1353360]     Ответить | Цитировать Сообщить модератору
 Re: Импорт курсов валют  [new]
Glory
Member

Откуда:
Сообщений: 104760
Стоит галка "с системной учетной записью", т.е как я понимаю по умолчанию это имя user, с которым я вхожу в сеть. Или не так?
Не так. Запуск сервиса не имеет никакого отношения к тому под какими учетными записями вы коннектитесь к нему.
1 мар 05, 16:11    [1353373]     Ответить | Цитировать Сообщить модератору
 Re: Импорт курсов валют  [new]
Полина
Member

Откуда: Петербург
Сообщений: 205
Glory
Стоит галка "с системной учетной записью", т.е как я понимаю по умолчанию это имя user, с которым я вхожу в сеть. Или не так?
Не так. Запуск сервиса не имеет никакого отношения к тому под какими учетными записями вы коннектитесь к нему.

А если у меня инет привязан к IP компа, а не к учетной записи? В таком варианте имя под которым коннектится сервер может на что-то влиять?
1 мар 05, 16:17    [1353416]     Ответить | Цитировать Сообщить модератору
 Re: Импорт курсов валют  [new]
Glory
Member

Откуда:
Сообщений: 104760
Что такое "инет привязан" ? На файерволе/прокси какие-то правила прописаны ?
1 мар 05, 16:27    [1353463]     Ответить | Цитировать Сообщить модератору
 Re: Импорт курсов валют  [new]
Полина
Member

Откуда: Петербург
Сообщений: 205
Glory
Что такое "инет привязан" ? На файерволе/прокси какие-то правила прописаны ?

Да, там прописано что комп с конкретным IP может идти в инет, внезависимости от того какой пользователь на этом компе будет сидеть. И я с компа с базой SQL спокойно захожу на любой сайт. А сам SQL нет :-( По-моему, в данном случае под какой учетной записью запускается MSSQLSERVER роли играть не должно?
1 мар 05, 16:30    [1353486]     Ответить | Цитировать Сообщить модератору
 Re: Импорт курсов валют  [new]
Glory
Member

Откуда:
Сообщений: 104760
По-моему, в данном случае под какой учетной записью запускается MSSQLSERVER роли играть не должно?
Для того, чтобы убедится в этом нужно попробовать запустить MSSQLSERVER под другой учетной записью. Например, под вашей
1 мар 05, 16:42    [1353542]     Ответить | Цитировать Сообщить модератору
 Re: Импорт курсов валют  [new]
Полина
Member

Откуда: Петербург
Сообщений: 205
Glory
По-моему, в данном случае под какой учетной записью запускается MSSQLSERVER роли играть не должно?
Для того, чтобы убедится в этом нужно попробовать запустить MSSQLSERVER под другой учетной записью. Например, под вашей

нет, данных не возвращает :-((( , ошибку правда тоже :-)))
1 мар 05, 16:51    [1353582]     Ответить | Цитировать Сообщить модератору
 Re: Импорт курсов валют  [new]
Glory
Member

Откуда:
Сообщений: 104760
У меня ваш скрипт работает. У вас с локальным файлом тоже. Значит дело не в MSSQL.
1 мар 05, 17:02    [1353624]     Ответить | Цитировать Сообщить модератору
 Re: Импорт курсов валют  [new]
Полина
Member

Откуда: Петербург
Сообщений: 205
Glory
Значит дело не в MSSQL.

То что код на TSQL правильный я поняла, когда с локальным файлом эксперементировала. А что тогда еще может быть? Если не SQL, куда еще смотреть? Есть ли возможность явно прописать на какой сайт можно лезть серверу (или usery на unix'овой проксе?)
1 мар 05, 17:09    [1353653]     Ответить | Цитировать Сообщить модератору
 Re: Импорт курсов валют  [new]
dobalex
Member

Откуда: Moscow
Сообщений: 69
Че-то непонятно, пробовали ли вы запускать службу MSSQL под другой учетной записью?
Войдите в Administrative Tools -> Services. Затем правой на сервисе MSSQL, закладка LOG On и поставьте не local system, как например по умолчанию стоит, а другой аккаунт.
1 мар 05, 17:25    [1353729]     Ответить | Цитировать Сообщить модератору
 Re: Импорт курсов валют  [new]
Полина
Member

Откуда: Петербург
Сообщений: 205
dobalex
Че-то непонятно, пробовали ли вы запускать службу MSSQL под другой учетной записью?

Да, пробовала. Процедура отрабатывает без ошибок, но данных не возвращает :-((( , ошибку правда тоже :-))) Тут не в учетной записи по-моему беда, а в том что у нас комп пускается в инет по IP вне зависимости от того кто и с какой учетной записью работает. Как лезет в инет SQL server?
Попробовала создать DTS пакет с источником DTS на xml файл:

New Connection............ConnName
Data source..................HTML file source
File name.....................http://www.cbr.ru/scripts/XML_dynamic.asp?date_req1=01/03/2005&date_req2=01/03/2005&VAL_NM_RQ=R01235
User name
Password

1. Вначале поставила: User name и пароль от учетной записи Windows, получила ошибку:
Error source: Microsoft Jet Database Engine
Error description: Не удается запустить приложение. Системная база данных отсутствует или открыта с монопольным доступом другим пользователем.

2. Запускаю под учетной записью SQL server - та же ошибка.
3. Дальше попробовала запустить без user name и пароля. Ошибка:
Error source: Microsoft Jet Database Engine
Error description: Обновление невозможно. База данных или объект доступны только для чтения.

Может инет на sql server'е настроить можно? В смысле доступ?
2 мар 05, 09:02    [1354681]     Ответить | Цитировать Сообщить модератору
 Re: Импорт курсов валют  [new]
Glory
Member

Откуда:
Сообщений: 104760
Тут не в учетной записи по-моему беда, а в том что у нас комп пускается в инет по IP вне зависимости от того кто и с какой учетной записью работает. Как лезет в инет SQL server?

Лезет также как и вы. Проверяйте на вашем файерволе куда и как он полез

Попробовала создать DTS пакет с источником DTS на xml файл:

New Connection............ConnName
Data source..................HTML file source
File name.....................http://www.cbr.ru/scripts/XML_dynamic.asp?date_req1=01/03/2005&date_req2=01/03/2005&VAL_NM_RQ=R01235
User name
Password


HTML file source работает только с файлом на диске. С URL-ми не работает.
2 мар 05, 09:49    [1354786]     Ответить | Цитировать Сообщить модератору
 Re: Импорт курсов валют  [new]
Полина
Member

Откуда: Петербург
Сообщений: 205
Логи на прокси:

Если через IE:
1109742265.548 51 193.142.107.138 TCP_MISS/200 584 GET http://www.cbr.ru/scr
ipts/XML_dynamic.asp? - DIRECT/212.40.192.49 text/xml


Если через MS SQL:
1109747386.359 4 193.142.107.138 TCP_MISS/000 0 GET http://www.cbr.ru/scrip
ts/XML_dynamic.asp? - NONE/- -
2 мар 05, 10:15    [1354890]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить