Здравствуйте!
Подскажите пожалуйста, как решить вот такую проблему:
На сервере установлено несколько SQL серверов. У одного из них имя совпадает с именем сервера, у остальных, естественно, отличаются. Моя программа должна писать данные в базу, находящуюся на SQL сервере с именем, отличным от имени сервера. Во время разработки на своем компьютере я установил связь с SQL сервером не по TCP/IP? а по именованным каналам. Все работает. Но на том компе, где будет работать программа, нет никаких инструментов SQL Server. Поэтому программа при попытке записи в базу выдает сообщение о том, что такого сервера не существует. Так как инструментов типа Enterprise Manager на этом компе нет, я не знаю, как на нем установить связь с сервером по именованным каналам.
Извините за сумбурность вопроса.
Помогите, кто может.


Term ( 2004-12-10 16:05 ) [1]

установи на компах клиентскую часть сервера


pavel_guzhanov ( 2004-12-10 16:17 ) [2]

А другого способа нет? А то программа будет работать на нескольких компах (их много), сама она рассылается по почте, а вот бегать и устанавливать клиентов — очени не хочется.


Stanislav © ( 2004-12-10 16:18 ) [3]

А для чего если не секрет на одной машине несколько SQL серверов ? (Это я так ради интереса)


Term ( 2004-12-10 16:21 ) [4]


> устанавливать клиентов — очени не хочется.

это другой вопрос, по идее можно включить нужные библиотеки в твой дистрибутив и рассылай её хоть по всему миру, в случае с FB я так и делал


pavel_guzhanov ( 2004-12-10 16:31 ) [5]


> А для чего если не секрет на одной машине несколько SQL
> серверов ? (Это я так ради интереса)

Это вопрос не ко мне, а к тем, кто это сделал. Мне надо написать прикладную программу и все.


Fay © ( 2004-12-10 19:08 ) [6]

2 pavel_guzhanov (10.12.04 16:31) [5]
Тогда прочитай ответ [1]. Этого должно хватить.

Протокол named pipes (именованные каналы) был разработан фирмой Microsoft несколько лет тому назад. В named pipes поддерживаются два режима: локальный и удаленный (дистанционный). Протокол local named pipes применяется в случаях, когда и клиент, и сервер находятся на одном и том же компьютере, а remote named pipes применяется, когда клиент и сервер находятся на разных компьютерах. Если соединение установлено через named pipes, сетевые утилиты SQL Server распознают, как оно осуществлено – с помощью локальных именованных каналов (local named pipes) или же с помощью удаленных (дистанционных) именованных каналов (remote named pipes).

Именованные каналы – это клиентский протокол, применяемый по умолчанию, и он является протоколом, применяемым по умолчанию в операционных системах Windows NT и Windows 2000. В операционных системах Microsoft Windows 95 и Microsoft Windows 98 именованные каналы применяться не могут. В этих системах на стороне сервера применяются протоколы TCP/IP, multiprotocol и shared memory. Хотя протокол "именованные каналы" работает эффективно, он обычно не используется в больших сетях, потому что он не поддерживает маршрутизацию и шлюзы. Также не рекомендуется его применение на медленных сетях, т.к. по сравнению с другими протоколами, например, TCP/IP, для него требуется передача значительно большего объема информации между сервером и клиентом.

TCP/IP

Протокол TCP/IP является одним из наиболее популярных сетевых протоколов, из-за очень большого количества компьютеров, на которых он работает, из-за того, что его применение принято в качестве стандарта, и из-за его высокой скорости. Он также является сетевым протоколом, применяемым в Интернете. Сетевая библиотека TCP/IP является одной из наиболее высокопроизводительных сетевых библиотек SQL Server. Благодаря высокой скорости и богатым возможностям TCP/IP станет хорошим выбором.

Multiprotocol

Сетевая библиотека multiprotocol – является совокупностью нескольких сетевых библиотек. Поэтому она не так эффективна, как одиночные сетевые библиотеки, но зато обеспечивает большую гибкость. Сетевая библиотека multiprotocol поддерживает протоколы TCP/IP, NWLink IPX/SPX и именованные каналы (named pipes). При использовании сетевой библиотеки multiprotocol обычно используется первый из протоколов, имеющихся на клиенте и на сервере. Так как клиент может соединяться с разными серверами при помощи разных протоколов, то multiprotocol является идеальным выбором.

NWLink IPX/SPX

Протокол NWLink IPX/SPXидеально подходит для интеграции (встраивания) систем SQL Server 2000 в сети Novell NetWare, потому что интеграция в нем реализована гладко, "без швов". Протокол IPX/SPX известен уже долгое время и обладает высокой производительностью и надежностью.

AppleTalk

AppleTalk – это сетевой протокол, разработанный фирмой Apple Computer и применяемый в компьютерах Apple. Windows NT и Windows 2000 поддерживают AppleTalk, благодаря чему серверы и клиенты Windows NT и Windows 2000 могут гладко, "без швов", интегрироваться в окружение AppleTalk.

Banyan VINES

Сетевая библиотека Banyan VINES служит для поддержки компьютеров, работающих в сети VINES. С помощью этой сетевой библиотеки можно интегрировать клиенты и серверы Windows в окружение VINES.

VIA (Virtual Interface Architecture)

Этот протокол поставляется в двух вариантах – Giganet и ServerNet II. Он хорошо подходит для кластеризованных серверов.

Выбор сетевой библиотеки должен осуществляться исходя из того, какие протоколы применяются в вашей сети. Проблемы с соединениями обычно возникают, когда сетевые библиотеки на сервере не синхронизованы с сетевыми библиотекам на клиенте. Если при соединении с сервером возникают трудности, то проверьте, как заданы сетевые библиотеки на обеих сторонах соединения. Также попробуйте соединиться с сервером при помощи другой программы, например, при помощи PING или Проводника Windows (Microsoft Windows Explorer), чтобы понять, относится ли проблема к работе SQL Server или же не работает сама сеть.

T-SQL

T-SQL можно применять, пользуясь какой-нибудь из трех утилит – ISQL, OSQL или Query Analyzer; кроме того, вы можете создавать и исполнять сценарии SQL.

Утилита ISQL

Утилита ISQL взаимодействует с SQL Server через API-интерфейс DB-LIB; с ее помощью можно исполнять интерактивные операторы T-SQL, хранимые процедуры и файлы сценариев. API-интерфейс DB-LIB остался на уровне функциональности SQL Server 6.5, поэтому приложение ISQL не поддерживает некоторые возможности SQL Server 2000. Например, ISQL не может извлекать данные из типа данных ntext (в кодировке Unicode).

Утилита OSQL

Утилита OSQL появилась в SQL Server 7 и осталась в SQL Server 2000 в качестве замены для ISQL. Утилиты ISQL и OSQL очень во многом сходны, но OSQL для коммуникации с SQL Server применяет API-интерфейс ODBC (Open Database Connectivity), а не DB-LIB, и OSQL поддерживает все возможности SQL Server 2000. Во всем остальном OSQL и ISQL функционируют одинаково. SQL Server 2000 поддерживает обе этих утилиты, однако, чтобы не столкнуться с проблемами, о которых мы упомянули, следует пользоваться OSQL, а не ISQL.

Чтобы исполнять OSQL из окна с приглашением командной строки (из окна MS-DOS), нужно просто запустить программу OSQL.exe с соответствующими параметрами, например, так:

osql –U имя_пользователя –P пароль –S имя_сервера

Когда OSQL установит соединение с SQL Server, появится такое приглашение с номером:

После этого приглашения можно вводить операторы T-SQL, например, такой оператор:

1> sp_helpdb master 2> go

В результате его выполнения будет выдана информация о базе данных master. Ключевое слово go не является оператором T-SQL, это – команда, распознаваемая ISQL, OSQL и Query Analyzer и обозначающая завершение пакета операторов T-SQL. Вывод от исполнения таких интерактивных запросов будет выдаваться в окне с приглашением командной строки.

Чтобы удалить базу данных при помощи команды T-SQL:

DROP DATABASE

Помните, что удаление базы данных является неотменяемым действием. Для удаления баз данных применяется T-SQL-команда DROP DATABASE.

Ниже показаны команды, которые удалят базу данных MyDB и все ее файлы:

USE master—Для запуска команды DROP DATABASE вы должны GO —применять базу данных master DROP DATABASE MyDB —Единственным параметром этой команды является имя удаляемой базы данных. GO

После удаления базы данных следует обновить резервную копию базы данных master, чтобы в ней содержалась свежая информация о пользовательских базах данных и не содержалась информация о только что удаленной базе данных. Также обратите внимание, что база данных не может быть удалена, когда к ней имеют доступ пользователи. Перед удалением базы данных нужно отсоединить от нее всех пользователей.

Если при наборе командных строк OSQL вы допустили опечатку, то, воспользовавшись командой RESET, можно снова вернуться к приглашению первой строки:

1> sp_helpbd 2> reset 1> sp_helpdb 2> go

Для завершения работы с утилитой OSQL введите команду QUIT или EXIT. Команду или запрос, исполняющуюся в текущий момент времени, можно завершить, нажав Ctrl+C (выход из утилиты OSQL при этом не произойдет).

Утилита OSQL имеет и другие параметры кроме -U, -P и -S. Полное описание всех параметров и дополнительную информацию об утилите OSQL вы найдете в Books Online, в теме "osql Utility".

Создав свои собственные сценарии, вы получите замечательную возможность для многократного запуска операторов и хранимых процедур T-SQL. Сценарий (script) – это просто файл, в котором содержатся операторы T-SQL, которые нужно запускать. В скрипте может быть как один оператор, так и последовательность операторов. Мы сразу дадим одну рекомендацию: создавая сценарии T-SQL, давайте именам их файлов расширение .sql, тогда вам будет легче находить эти файлы.

Ниже дан пример кода простого сценария:

use MyDB go sp_helpdb MyDB go sp_helpfilegroup go sp_spaceused Customer_Data go sp_spaceused Product_Info go

Этот сценарий вызывает несколько системных хранимых процедур, собирающих разнообразную информацию о базе данных MyDB и ее файлах, группах файлов и таблицах (Customer_Data и Product_Info).

Предположим, что этот сценарий был сохранен в файле MyDB_info.sql. Тогда, чтобы запустить его из командной строки, вы можете воспользоваться опциями -i и -o утилиты OSQL.

Опция -i вызывает запуск сценария, находящегося во входном файле
( input ), имя которого указано после опции.

Опция -o задает выходной файл ( output ), имя которого указано после опции, в него будут помещены результаты. Пусть выходной файл у нас будет иметь имя MyDB_info.out. Давайте также применим опцию -e, тогда операторы T-SQL из входного файла будут отображаться (echo) также и в выходном файле, что облегчит понимание выходного файла.

Например, чтобы исполнить наш сценарий, будучи системным администратором, надо дать следующую команду в командной строке:

osql –U sa –P –i MyDB_info.sql –o MyDB_info.out –e

Есть и другой способ запуска сценариев, при котором вам не понадобится каждый раз набирать с клавиатуры команду osql -u . Надо создать .cmd-файл и поместить в него эту команду. Так, можно назвать этот файл MyDB_info.cmd и поместить в него вышеприведенную команду osql -u . Теперь вы можете не только запустить команду MYDB_INFO из командной строки, но и дважды щелкнуть мышью на имени файла MyDB_info.cmd в Проводнике Microsoft Windows.

Сценарии можно запускать и в Query Analyzer. Чтобы запустить наш сценарий MyDB_info.sql, откройте этот файл, выбрав в Query Analyzer команду Open в меню File, после этого в верхней панели появится код сценария. Нажмите на кнопку Execute Query или нажмите клавиши Ctrl+E, и операторы сценария исполнятся. Вывод от операторов сценария будет выдаваться в соответствии с порядком исполнения операторов (рис. 19). Обратите внимание, что на рис. 19 две верхние таблицы результатов выданы хранимой процедурой sp_helpdb.

Рис. 19Результаты исполнения сценария Query Analyzer

Query Analyzer

Query Analyzer применяется для исполнения операторов или сценариев T-SQL из графического пользовательского интерфейса и для получения результатов в форматированном виде. Query Analyzer обладает также некоторыми средствами для анализа индексов запросов. Некоторые люди предпочитают применять Query Analyzer, а не запускать операторы в окне "приглашения MS-DOS". Для работы с Query Analyzer выполните следующие действия:

1. Запустите Query Analyzer каким-либо из следующих трех способов.

o введите isqlw в командной строке;

o откройте Enterprise Manager и выберите SQL Query Analyzer в меню Tools;

o в меню кнопки Start наведите указатель мыши сначала на Programs, затем на Microsoft SQL Server, а затем выберите Query Analyzer.

Если вы не соединены с сервером, то появится диалоговое окно Connect to SQL Server (Соединиться с SQL Server) (рис. 15).

Рис. 15.Диалоговое окно Connect to SQL Server

2. В ниспадающем списке SQL Server выберите сервер, с которым вы хотите соединяться. Точка, стоящая в этом поле, означает соединение с локальным сервером. Введите информацию для входа в систему и, если вы желаете, чтобы в случаях, когда SQL Server не запущен, он запускался бы автоматически, установите флажок Start SQL Server if it is stopped. Затем нажмите на экранную кнопку OK. Появится стартовое окно Query Analyzer (рис. 16).

Рис. 16SQL Query Analyzer

3. В окне запросов введите с клавиатуры любой оператор T-SQL или вызов хранимой процедуры (рис. 17). Заметьте, что окно запросов на приведенном рисунке развернуто и занимает все окно Query Analyzer.

Рис. 17.Вызов хранимой процедуры в окне запросов

4. Чтобы выполнить введенный оператор, нажмите на кнопку Execute Query (Исполнить запрос), находящуюся на панели инструментов и выглядящую как зеленый треугольник, указывающий острием вправо, либо нажмите Ctrl+E*. Результаты исполнения запроса появятся в панели результатов (рис. 18).

Рис. 18.Query Analyzer показывает результаты исполнения запроса

5. Если нужно, чтобы Query Analyzer загрузил и исполнил созданный вами ранее T-SQL-сценарий, то нажмите на кнопку Load SQL Script в панели инструментов, выглядящую как желтая папка, или выберите команду Open в меню File, а затем найдите и укажите нужный файл со сценарием. Весь сценарий появится в верхней панели окна запросов. Для запуска сценария нажмите на кнопку Execute Query.

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим.

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций.

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰).

ОБЛАСТЬ ПРИМЕНЕНИЯ: SQL Server (только в Windows) База данных SQL Azure Azure Synapse Analytics (хранилище данных SQL) Parallel Data Warehouse APPLIES TO: SQL Server (Windows only) Azure SQL Database Azure Synapse Analytics (SQL DW) Parallel Data Warehouse

Используйте страницу Протоколв диалоговом окне Свойства именованных каналов , чтобы просмотреть или изменить именованный канал, который прослушивается Microsoft Microsoft SQL Server SQL Server , во время использования протокола именованных каналов. Use the Protocolpage on the Named Pipes Properties dialog box to view or change the named pipe that Microsoft Microsoft SQL Server SQL Server listens to, when using the Named Pipes protocol.

SQL Server SQL Server должен быть перезапущен, чтобы включить протокол, отключить протокол или изменить именованный канал. must be restarted to enable or disable the protocol, or change the named pipe.

Параметры Options

Enabled Enabled
Возможные значения: Да и Нет. Possible values are Yes and No.

Имя канала Pipe Name
Указывает именованный канал, который прослушивается SQL Server SQL Server . Specifies the named pipe on which SQL Server SQL Server listens. По умолчанию SQL Server SQL Server прослушивает \.pipesqlquery для экземпляра по умолчанию и \.pipeMSSQL$ sqlquery для именованного экземпляра. By default, SQL Server SQL Server listens on: \.pipesqlquery for the default instance and \.pipeMSSQL$ sqlquery for a named instance. Длина этого поля ограничена 2047 символами. This field is limited to 2047 characters.

Создание альтернативного именованного канала Creating an Alternate Named Pipe

Чтобы изменить именованный канал, введите новое имя канала в поле Имя канала , а затем остановите и перезапустите SQL Server SQL Server . To change the named pipe, type the new pipe name in the Pipe Name box and then stop and restart SQL Server SQL Server . Так как sqlquery хорошо известен в качестве именованного канала, используемого SQL Server SQL Server , изменение канала может помочь сократить риск проведения атак вредоносными программами. Since sqlquery is well known as the named pipe used by SQL Server SQL Server , changing the pipe can help reduce the risk of attack by malicious programs.

Пример Example

Введите \.pipeunitapp , чтобы прослушивать канал unitapp . Type \.pipeunitapp to listen on the unitapp pipe.

Введите \.pipeacct , чтобы прослушивать канал acct . Type \.pipeacct to listen on the acct pipe.