Отправляет email-рассылки с помощью сервиса Sendsay

MS SQL Server

  Все выпуски  

MS SQL Server - дело тонкое...


Информационный Канал Subscribe.Ru


#101<<  #102

СОДЕРЖАНИЕ

1.СОВЕТЫ
1.1.XML в MS SQL Server 2000 и технологиях доступа к данным (продолжение)
1.1.1.UpdateGrams
2.ПОЛЕЗНОСТИ
3.ССЫЛКИ НА СТАТЬИ
3.1.Новые технические статьи Microsoft
4.ФОРУМ SQL.RU
4.1.Самые популярные темы недели
4.2.Вопросы остались без ответа

СОВЕТЫ

XML в MS SQL Server 2000 и технологиях доступа к данным (продолжение)
По материалам конференции "Корпоративные базы данных 2002"

Автор: Алексей Шуленин

01. Введение
02. Сохранить как XML
03. Получить как поток XML
04. XML на стороне сервера. FOR XML
05. SQLXML-классы в .NET
06. FOR XML на стороне клиента
07. XML-представление наборов данных в ADO .NET
08. Прямые XPath-запросы к объектам SQL Server
09. Аннотированные схемы
10. XML-шаблоны как разновидность хранимых процедур

11. UpdateGrams

До сих пор под XML-взаимодействием с SQL Server понималось, в основном, чтение данных с сервера в XML-формате с помощью SELECT ... FOR XML или XPath. Возникает вопрос: можно ли их модифицировать в рамках XML-представления. Про возможность модификации косвенно упоминалось пару раз: когда мы говорили про возможности ADO.Net (п.7) и про шаблоны (п.10). Первый способ предусматривает связь с сервером через DataAdapter и работу с DataSet в рамках его XMLной ипостаси. Второй можно реализовать, поместив запросы на обновление в секцию <sql:query> шаблона:


<Root xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <sql:header>
     <sql:param name="Имя"></sql:param>
     <sql:param name="Фамилия"></sql:param>
  </sql:header>
  <sql:query>
    UPDATE Customers SET ContactName = 'Maria Anders' WHERE CustomerID = 'ALFKI'
    INSERT Employees (FirstName, LastName) Values (@Имя, @Фамилия)
  </sql:query>
</Root>

Его выполнение:


static void Execute_UpdateTemplate_SQLXML()
{
 ...
 cmd.CommandText = "..\\Templates\\XMLTemplate3.xml";
 cmd.CommandType = SqlXmlCommandType.TemplateFile;
 SqlXmlParameter prm = cmd.CreateParameter();
 prm.Name = "@Имя"; prm.Value = "ааа";
 prm = cmd.CreateParameter();
 prm.Name = "@Фамилия"; prm.Value = "ббб";
 cmd.ExecuteNonQuery();
}

равнозначно тому, как если бы эти запросы были выполнены обычным путем. Возникает вопрос: можно ли модифицировать данные непосредственно на сервере (не кэшируя их предварительно в DataSet) и работая с ними, как с XML, а не через реляционные операторы. Такой способ предоставляет UpdateGrams.
Пример файла UpdateGrams, с которым мы будем работать, приведен на рис.8.


<?xml version="1.0" encoding="utf-8" ?>
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">

<updg:header>
 <updg:param name="Дата"/>
 <updg:param name="Стоимость" />
</updg:header>

<updg:sync mapping-schema="..\Schemas\SQLSchema1.xsd">

 <updg:before>
  <Клиент Имя="Ana Trujillo" updg:id="x" />
  <Клиент Имя="Antonio Moreno" updg:id="y" />
 </updg:before>
 <updg:after>
  <Клиент updg:id="y"
  Фирма="Рога&Копыта"
  Имя="Дон Педро" />
 </updg:after>

 <updg:before>
  <Клиент CustomerID="ALFKI" />
 </updg:before>
 <updg:after>
  <Клиент CustomerID="ALFKI">
   <Заказы>
    <Заказ>
     <Дата>
      $Дата
     </Дата>
     <Стоимость>
      cast(@Стоимость as money)
     </Стоимость>
    </Заказ>
   </Заказы>
  </Клиент>
  </updg:after>

</updg:sync>

<updg:sync mapping-schema="..\Schemas\SQLSchema2.xsd">

 <updg:after>
  <Сотрудник updg:at-identity="x"
  Имя="Альбус"
  Фамилия="Дамблдор" >
   <Сотрудник Имя="Минерва"
   Фамилия="МакГонагалл"
   ReportsTo="x" />
  </Сотрудник>

 </updg:after>

</updg:sync>

</ROOT>

Поскольку я постарался напихать в него по максимуму показательных вещей, разберем данный updategrams по частям. Начнем с того, что это XML-файл, структура которого довольно близка к уже рассмотренным нами шаблонам. В </updg:sync> может задаваться аннотированная схема, которая отображает реляционную схему на XSD и благодаря которой мы можем работать с информацией в БД как с XML. Если схема не указана, предполагается отображение по умолчанию: каждая запись таблицы - элемент, поля в ней - атрибуты. По большому счету updategrams состоит из секций трех типов: <updg:header> - в ней передаются возможные параметры; <updg:before> и <updg:after>. Если запись фигурирует только в <updg:before>, она удаляется; если только в <updg:after> - вставляется; если и там, и там - обновляется. Рассмотрим, например, ситуацию, когда весь updategrams состоит только из


<updg:sync mapping-schema="SQLSchema1.xsd">
     <updg:before>
  <Клиент Имя="Ana Trujillo" />
</updg:before>
 <updg:after>
 </updg:after>
</updg:sync>

В процессе его выполнения на SQL Server происходит следующее:

SET XACT_ABORT ON
BEGIN TRAN
DECLARE @eip INT, @r__ int, @e__ int
SET @eip = 0
DELETE Customers WHERE ( ContactName=N'Ana Trujillo' ) ;
SELECT @e__ = @@ERROR, @r__ = @@ROWCOUNT
IF (@e__ != 0 OR @r__ != 1) SET @eip = 1
IF (@r__ > 1) RAISERROR
( N'SQLOLEDB Error Description: Ambiguous delete, unique identifier required Transaction aborted ', 16, 1)
ELSE IF (@r__ < 1) RAISERROR
( N'SQLOLEDB Error Description: Empty delete, no deletable rows found Transaction aborted ', 16, 1)
IF (@eip != 0) ROLLBACK ELSE COMMIT
SET XACT_ABORT OFF

Из этого сразу видно несколько важных вещей. Первое: каждая секция <updg:sync> открывает отдельную транзакцию (см. BEGIN TRAN). Второе: описание модифицируемого элемента (<Клиент Имя="Ana Trujillo" />) в <updg:before> и/или <updg:after> должно соответствовать одной записи, неважно, идет ли маппирование по дефолту или через аннотированную схему. Если записей, отвечающих эквивалентному условию WHERE не находится (@r__ < 1) или больше одной (@r__ > 1), будет сгенерирована ошибка (RAISERROR) и транзакция откатится (ROLLBACK).
Поскольку в каждой секции <updg:before> и <updg:after> может находиться несколько записей, то необходимо как-то сопоставить их друг другу в случае обновления. Например, при парсинге этого шаблона


 <updg:before>
  <Клиент Имя="Ana Trujillo" updg:id="x" />
  <Клиент Имя="Antonio Moreno" updg:id="y" />
 </updg:before>
 <updg:after>
  <Клиент updg:id="y"
  Фирма="Рога&Копыта"
  Имя="Дон Педро" />
 </updg:after>

SqlXml должен понимать, что клиента по имени Ana Trujillo мы хотим просто удалить, а клиента по имени Antonio Moreno обновляем, поэтому строка <Клиент updg:id="y" Фирма="Рога&Копыта" Имя="Дон Педро" /> в <updg:after> соответствует именно ему. Это можно сделать двумя способами. Первый - пометить их одним и тем же updg:id. Второй способ - однозначно идентифицировать записи при помощи первичного ключа таблицы. Для этого нужно а) определить ключ в аннотированной схеме (вспоминайте аннотацию ms:key-fields) и б) явно сослаться на него в <updg:before>/<updg:after> (скажем, <Сотрудник ID_Сотрудника="..." />).

Следующая часть


 <updg:before>
  <Клиент CustomerID="ALFKI" />
 </updg:before>
 <updg:after>
  <Клиент CustomerID="ALFKI">
   <Заказы>
    <Заказ>
     <Дата>
      $Дата
     </Дата>
     <Стоимость>
      cast(@Стоимость as money)
     </Стоимость>
    </Заказ>
   </Заказы>
  </Клиент>
  </updg:after>

производит обновление и вставку одновременно. В заказы, сделанные клиентом с идентификатором ALFKI добавляется еще один заказ. При этом SQL Server сам распознает, что новую запись в таблице Orders нужно подчинить данному клиенту в таблице Customers и автоматически устанавливает для нее CustomerID в "ALFKI".


exec sp_executesql N'...
INSERT Orders (OrderDate, Freight, CustomerID)
VALUES (@Дата, cast(@Стоимость as money), N''ALFKI'') ... ',
        N'@Дата nvarchar(19),@Стоимость sql_variant',
        N'08.04.2002 18:41:34', 100

Это происходит благодаря тому, что поле CustomerID указано в качестве связующего в <ms:relationship> схемы SQLSchema1.xsd. Обратите внимание, что несмотря на то, что в аннотирующей схеме ему явно не соответствует никакой элемент/атрибут, на него можно ссылаться в updategrams-файле. Для автоматического подчинения родительскую запись в <updg:before>/<updg:after> необходимо идентифицировать именно по CustomerID, которое значится как parent-key в схеме (parent-key="CustomerID"). Определение записи по другим атрибутам, пусть даже однозначно ее идентифицирующим (например, <Клиент Имя="Maria Anders" Фирма="Alfreds Futterkiste" ...>), к такому эффекту не приводит. Следующая часть updategrams-файла:


<updg:sync mapping-schema="..\Schemas\SQLSchema2.xsd">

 <updg:after>
  <Сотрудник updg:at-identity="x"
  Имя="Альбус"
  Фамилия="Дамблдор" >
   <Сотрудник Имя="Минерва"
   Фамилия="МакГонагалл"
   ReportsTo="x" />
  </Сотрудник>

 </updg:after>

</updg:sync>

открывает другую транзакцию и работает с другой аннотирующей схемой, которая, как вы помните, превращает parent-child таблицу в XML-иерархию. Здесь демонстрируется не автоматическое, а "ручное" подчинение. Мы вставляем одновременно две записи. Чтобы подчинить вторую первой, нужно значение поля ReportsTo для второй установить в первичный ключ первой. Положение осложняется тем, что первичный ключ - это identity, и его значение априори неизвестно. Выйти из положения позволяет аннотация updg:at-identity. Кстати, здесь мы снова обращаемся к полю (ReportsTo), которое нигде в схеме не засвечено, а используется только в описании отношения (<ms:relationship>).
Дата и стоимость заказа передаются в виде параметров. Если параметр подставляется standalone, можно использовать XPath-обозначение ($Дата), если же над ним по ходу выполняются какие-то SQL-преобразования - то SQLное (@Стоимость).
Я не стал дальше усложнять пример, но хотел бы отметить еще две полезных аннотации. <updg:nullvalue> позволяет оговорить SQLный NULL:


<updg:sync mapping-schema="SQLSchema2.xsd" updg:nullvalue="Пусто">
 <updg:after>
  <Сотрудник updg:at-identity="x"
  Имя="Альбус"
  Фамилия="Дамблдор" >
   <Сотрудник Имя="Минерва"
   Фамилия="МакГонагалл"
   ReportsTo="Пусто" />
  </Сотрудник>

 </updg:after>

</updg:sync>

В этом случае второй сотрудник не будет подчинен первому, т.к. несмотря на то, что в XML эта запись вложена, при занесении ее в таблицу ей не будет назначено никакого руководителя (ReportsTo=NULL).
Аннотация ms:inverse применяется не в UpdateGrams, а при описании аннотированной схемы. Мы не рассматривали ее в п.9, потому что она имеет смысл только тогда, когда та используется затем в updategrams. Дело в том, что SQL Server считает, что иерархия "родитель-потомок" в XML соответствует ограничению первичный - внешний для ключей связанных таблиц. Рассмотрим updategrams вида


<updg:sync mapping-schema="..\Schemas\SQLSchema2.xsd">
 <updg:before>
  <Клиент CustomerID="ALFKI">
   <Заказы>
    <Заказ />
   </Заказы>
  </Клиент>
 </updg:before>
</updg:sync>

Сразу ясно, что этот пример вызовет ошибку, поскольку данный клиент сделал более одного заказа, а условием UpdateGrams является однозначная идентификация записи. Но дело не в этом. На сервере будут выполнены действия в следующем порядке: DELETE Orders WHERE CustomerID = N'ALFKI'; DELETE Customers WHERE CustomerID = N'ALFKI'. (Использование атрибутов, не входящих в определение <ms:relationship>, - напр., <Клиент Имя="Maria Anders"> приведет к полному DELETE Orders). Из этой последовательности видно, что SqlXml сначала пытается произвести обновления / удаления в дочерней таблице, а уже потом из родительской, чтобы по возможности не противоречить referential constraints. В жизни бывают ситуации, когда схема может задавать вложенность элементов, противоположную направлению действия ограничения primary key/foreign key в таблицах. Тогда SqlXml, предполагая, что вложенный элемент соответствует внешнему ключу, полезет на самом деле в первичную таблицу, получит от SQL Server по рукам и откатит транзакцию. Чтобы побороть такую ситуацию, в <ms:relationship> нужно поставить ms:inverse="true".
Полный список аннотаций, как всегда, можно найти в документации к SQLXML 3.0. Вызов UpdateGrams из приложения происходит аналогично вызову шаблона через файл (см. Скрипт 12) или Stream. При его тестировании в БД Northwind предварительно нужно превратить связь Orders -> [Order Details] из строгой в каскадную. Поскольку [Order Details] не участвует в updategrams, ее FK будет препятствовать обновлению Orders (в отличие от Customer -> Orders, где это учитывается автоматически за счет указания в relationship в аннотированной схеме).

...
cmd.CommandText = "..\\Templates\\UpdateGrams1.xml";
cmd.CommandType = SqlXmlCommandType.TemplateFile;
SqlXmlParameter prm = cmd.CreateParameter();
prm.Name = "@Дата"; prm.Value = DateTime.Now.ToString();
prm = cmd.CreateParameter();
prm.Name = "@Стоимость"; prm.Value = 100;
cmd.ExecuteNonQuery();

Скрипт 12

ПРОДОЛЖЕНИЕ СЛЕДУЕТ

[Содержание]

ПОЛЕЗНОСТИ

FAQ по MS SQL Server на английском языке http://www.windows2000faq.com/Articles/Index.cfm?DepartmentID=800

[Содержание]

ССЫЛКИ НА СТАТЬИ

Новые технические статьи Microsoft

"0x80004005" Error Message Connecting to Microsoft Project Web Access Site When You Try to Install Microsoft Project Central (Q323335)
"Computer Name Not Found" Using Performance Monitor (Q241110)
ACC2000: "Save Password" Check Box Is Unavailable When You Link ODBC Tables (Q207823)
ACC2000: How to Set the QueryTimeout Value for ODBC Connections (Q208386)
ACC2000: Procedure to Create Data Sources and Relink ODBC Tables (Q208295)
ACC2000: TraceSQLMode Setting Helps Debug SQL Queries to ODBC (Q209082)
ACC2000: Updated Version of Microsoft Jet 4.0 Available in Download Center (Q239114)
ACC2000: Using dBASE Data with Access 2000 and Jet (Q230125)
BUG: Assertion Occurs When You Try to Run a Query That Uses a Parallel Plan (Q317089)
BUG: Cannot Use Null Key Values for Session Variables in SQL Server Mode or State Server Mode (Q321023)
BUG: Cluster Administrator: Node Two Is Not a Possible Owner in SQL Resources (Q319601)
BUG: DataGrid Does Not Handle Special Filter Constants Correctly (Q191919)
BUG: Error 18456 when Trying to Configure Publishing Using a Remote Distributor (Q225129)
BUG: Error When You Call LoadData Method in MSDN "Creating a Distributed Application" Walkthrough (Q320354)
BUG: Incorrect Identity Value with Self-Referencing FOREIGN KEY Constraint (Q322818)
BUG: Manager / View Orders By Month Cannot Display More Than One Page of Orders (Q216588)
BUG: MSDB Database May Not Be Created During Installation (Q178206)
BUG: RowCount Property and Number of Records Returned are Not Equal (Q214451)
BUG: Service Pack 5 and 5a Setup May Fail Depending on SQLPath (Q219063)
BUG: SNMP Agent Message Causes Event ID 322 (Q230393)
BUG: SQL 7.0 Desktop Edition Install on Windows 98 Causes "Assertion Failed File: ..\SRC\SQLSSPI.C Line: 119" (Q229608)
BUG: SQL Executive Alerts Using SNMP Traps Stop Working After the SNMP Service Is Restarted (Q214855)
BUG: The SQL Server VDI Backup and Restore Operations Are Not Successful and the CoCreateInstance Error Is Generated (Q323602)
FIX: 8623 Error Message Occurs When Opening a Fast Forward Only Cursor on a View (Q322865)
FIX: Deadlock May Occur During Update Statistics on System Tables (Q322868)
FIX: Incorrect Results May Occur with Index Spool and Parallel Plan (Q322871)
FIX: Registry Permission Difference When You Install OLAP Services on Windows 2000 (Q241088)
FIX: Reordering Joins May Cause MISSING JOIN PREDICATE Warning (Q322854)
FIX: SQL Server Cluster Setup May Fail on Third-Party Disk Drives (Q184008)
FIX: Thread Abort During SqlCommand.ExecuteReader Corrupts SqlConnection Pool (Q319345)
FIX: Upgrade to SQL Server Fails When MSDE Installed from MOD (Q234915)
How to Back Up, Schedule, and Restore a Microsoft Project Server Database (Q323330)
How to Change the Server Service Properties (Q228766)
How to Install ODBC or MDAC on Terminal Server (Q216149)
How to Optimize Windows NT Server Using the Registry (Q232271)
HOW TO: Change Connection Strings to Commerce Databases (Q321619)
HOW TO: Change Domains for a SQL Server 2000 Failover Cluster (Q319016)
HOW TO: Loop Through and Examine CheckBox Control Values in a DataGrid Column by Using ASP.NET and Visual Basic .NET (Q321881)
HOW TO: Loop Through and Examine CheckBox Control Values in a DataGrid Column by Using ASP.NET and Visual C# .NET (Q320707)
HOW TO: Populate a DataSet Object from a Database by Using Visual J# .NET (Q320625)
HOW TO: Refer to a Just-Inserted Record in a SQL Server 7.0 (Q319724)
HOW TO: Troubleshoot Your SQL Mail Issue (Q321183)
HOW TO: Update Information in a Microsoft Access Database Using ASP in FrontPage 2000 (Q240090)
HOW TO: Upgrade Project Central Database 2000 to Microsoft Project Server 2002 (Q321344)
HOW TO: Use Extension Objects When You Execute XSL Transformations in Visual Basic .NET Applications (Q321702)
HOWTO: Connect to a SQL Server 2000 Named Instance with JDBC (Q313225)
HOWTO: Fill a Typed DataSet from a Stored Procedure That Returns Multiple Resultsets by Using Visual Basic .NET (Q322793)
HOWTO: Implement Session Pooling from Visual Basic ADO Program (Q228843)
HOWTO: Install an MSMQ Independent Client on a Cluster After SQL Server 7.0 (Q237458)
HOWTO: Manually Uninstall Microsoft Message Queue Server (Q202124)
HOWTO: Programmatically Reset the Compatibility Level Setting of SQL Server ODBC Driver Version 3.70 (Q233539)
HOWTO: Programmatically Set the Compatibility Level of the SQL Server ODBC Driver (Q231812)
HOWTO: Retrieve @@IDENTITY Value Using JDBC (Q313130)
INF: Comparative Evaluation (White Paper) (Q322399)
INF: Developing with Microsoft English Query in SQL Server 7.0 (White Paper) (Q322602)
INF: Enabling DLL-Based COM Object Execution Outside SQL Server (Q198891)
INF: Frequently Asked Questions - SQL Server 2000 - Log Shipping (Q314515)
INF: Frequently Asked Questions - SQL Server 2000 - Table Variables (Q305977)
INF: Frequently Asked Questions - SQL Server 7.0 - Failover (Q195761)
INF: Frequently Asked Questions - SQL Server 7.0 - SQL Setup (Q195759)
INF: How to Increase the Number of SQL Server Error Logs (Q196909)
INF: How to Install SQL Server 7.0 Enterprise Edition on Microsoft Cluster Server: Step-by-Step Instructions (White Paper) (Q322619)
INF: How to Move, Copy, and Back Up Full-Text Catalog Folders and Files (Q240867)
INF: How To Run SQLDIAG On a Clustered/Virtual SQL Server (Q233332)
INF: How to Set Up the ProcSrv ODS Server Application (Q194523)
INF: How to Upgrade SQL Server 6.5 and 7.0 to SQL Server 2000 (White Paper) (Q322620)
INF: Identifying Common Administrative Issues for Microsoft SQL Server 2000 (White Paper) (Q322322)
INF: Implementing Large Decision Support Databases on SQL Server 7.0 (White Paper) (Q322697)
INF: Index Tuning Wizard for SQL Server 7.0 (White Paper) (Q322698)
INF: Inside the SQLXML Virtual Directory Structure (White Paper) (Q322329)
INF: Installing Microsoft SQL Server 7.0 (White Paper) (Q323139)
INF: Leveraging the Power of DTS (White Paper) (Q322702)
INF: Managing Permissions for DTS Packages in an Enterprise Environment (Q282463)
INF: Manually Removing SQL 6.5 After Failed Install (Q198680)
INF: Microsoft Corp. SQL Server Analysis Services (White Paper) (Q322706)
INF: Microsoft SQL Server 2000 - How to Set Up Log Shipping (White Paper) (Q323135)
INF: Microsoft SQL Server 2000 Scalability Project - Basic Capacity Scalability (White Paper) (Q322708)
INF: Microsoft SQL Server 7.0 Preparedness Review (White Paper) (Q323136)
INF: Microsoft SQL Server MegaServers: Achieving Software Scale-Out (White Paper) (Q322072)
INF: Microsoft's Business Internet Analytics (White Paper) (Q322700)
INF: Middle Tier Application Data Caching with SQL Server 2000 (White Paper) (Q322321)
INF: Migrating Your Microsoft Access Database to SQL Server 7.0 (White Paper) (Q322714)
INF: Moving SQL Server Databases to a New Location with Detach/Attach (Q224071)
INF: PeopleSoft eBill Payment - Benchmark (White Paper) (Q322716)
INF: PeopleSoft Financials Online - Benchmark (White Paper) (Q322718)
INF: Powerful and Accessible Analysis for Business (White Paper) (Q322719)
INF: Price Comparisons (White Paper) (Q322720)
INF: RDBMS Performance Tuning Guide for Data Warehousing (White Paper) (Q322866)
INF: Replication for SQL Server 7.0 (White Paper) (Q322870)
INF: SAP Retail - Benchmark (White Paper) (Q322877)
INF: SAP Sales and Distribution - Benchmark (White Paper) (Q322878)
INF: SQL Query Analyzer Color Code Information (Q315689)
INF: SQL Server 2000 Full-Text Search Deployment White Paper (Q323739)
INF: SQL Server 2000 Security White Paper (Q322712)
INF: SQL Server 7.0 Btrieve Migration Kit (White Paper) (Q322352)
INF: SQL Server 7.0 Performance Tuning Guide (White Paper) (Q322883)
INF: SQL Server 7.0 Security (White Paper) (Q322899)
INF: Storage Engine Capacity Planning Tips (White Paper) (Q323043)
INF: Talk to Your Data - Introduction to Microsoft English Query (MSEQ) for SQL Server 2000 (White Paper) (Q322070)
INF: Technology Comparison Discussion: SQL Server 2000 and Oracle8i (White Paper) (Q323044)
INF: Transactional Replication Performance Tuning and Optimization (White Paper) (Q322324)
INF: Transactional Replication Performance Tuning and Optimization (White Paper) (Q323046)
INF: Understanding Merge Replication Article Processing Order (Q307356)
INF: Using Data Definition Language with SQL Server 2000 Analysis Services Client Applications (White Paper) (Q323048)
INF: Visual Basic for Applications and Excel Library Functions Are Not listed in MDX Builder (Q322966)
INF: What's New in SQL Server 2000 (White Paper) (Q323049)
INFO: Error "-2147168246 (8004d00a)" Failed to Enlist on Calling Object's Transaction (Q191168)
INFO: Explanation of the MDAC 2.6 sp2 Refresh Release (Q322049)
INFO: Microsoft SQL Server 2000 Driver for JDBC Does Not Support HTTP Tunneling (Q313185)
INFO: Names and IP Addresses That an MSDTC Client in a Cluster Environment Must Have (Q311846)
INFO: Rebuilding SQL Server Registry Entries After Last Known Good (Q142743)
INFO: Registry Entries and Keywords for SQL Server Connection Strings (Q229929)
INFO: Set the Node Cache Size Based on Site Size (Q318976)
INFO: VB6 Learning, Professional, and Enterprise Features (Q191037)
Microsoft Access Version 2.0 Service Pack (Q122927)
Microsoft SQL Server 2000
Microsoft SQL Server 7.0 Conversion Guide
Office Server Extensions Installation Prompts for SQL Server (Q236627)
Overcoming User32.dll Initialization Failure Errors (Q142676)
Packager Service Does Not Start If SQL Server Is Not Running (Q231644)
PRB: BizTalk Accelerator for Suppliers Publication Does Not Detect Protocol Removal (Q322770)
PRB: DCOM Port Range Configuration Problems (Q217351)
PRB: Error Establishing Socket with JDBC Driver (Q313178)
PRB: PreBuildServer Error During SQL 7.0 Setup (Q223295)
PRB: Rollback from MDAC 2.6 sp2 Refresh May Fail (Q322170)
PRB: SQL 6.5 Upgrade Results in Errors 4850 and 4851 (Q321456)
PRB: SQL Performance Monitor Counters Missing (Q227662)
PRB: SQL Server 2000 Views Not Replicated to Microsoft Access Through Merge Replication (Q318241)
PRB: STR() Inconsistent with Exact Numeric Data (Q154000)
PRJ98: Export Map with Filter Does Not Save Summary Tasks (Q191994)
PSRV2002: Error Messages If You Try to Add a SharePoint Team Services Server (Q322235)
PSRV2002: Microsoft Project Server Requirements for Portfolio Analyzer (Q323334)
Requirements to Install Updated Service Packs and Add-ons on Small Business Server (Q190152)
SECDoClientHandShake Cannot Connect to SQL Server (Q322144)
SMS: Chinese Clients Cannot Report Hardware or Software Inventory to a Japanese SMS Site Server (Q321802)
SMS: File Time Stamp Is Changed During Software Distribution Across Time Zones (Q319427)
SMS: List of Bugs Fixed in Systems Management Server 2.0 SP4 (Q308269)
SMS: Retrying a Package Update May Create Many Jobs (Q319207)
SMS: Transaction History Files Increase in Size (Q320692)
SMS: Troubleshooting Server, Component, and Hierarchy Issues (Q241001)
SNA Server and 2012 System Log Errors (Q134905)
The Content Index Service May Not Work if You Uninstall SQL Server 7.0 (Q225393)
TPU: How to Manually Remove Team Productivity Update (Q241124)
Unable to Change the Startup Parameter When a Service Hangs (Q158995)
Variants Missing in Catalog XML Export (Q322386)
Visio2000: "Run-time Error R6026 Pure Virtual Function Call" When You Add Snap-in to MMC (Q322862)
Windows 95/98 Clients Hang with "Mprexe.exe Not Responding" Error Message (Q234647)
XL: How to Use System, User, and File Data Sources (Q213772)
XL2000: How to Programmatically Perform a Web Query (Q213730)
You Receive SQL Error -514 When You Link to a Table That Has More Than 10 Records (Q321872)

[Содержание]

ФОРУМ SQL.RU

Самые популярные темы недели

Рубли без копеек
Репликация транзакций
Как перевести формат TDateTime Delphi в формат DateTime MS SQL Server?
Вопрос по безопасности SQL
Есть ли какие нить средства для отладки Stored Procedure?
СПАСИТЕ!!!! Импорт из удаленной базы
Как выбрать последние N записей из таблицы?
C SQL 7.0 сервера послать сообщение клиенту как ???
Нумерация в запросе 2
Репликация
Динамические запросы или однотипные ХП
Не догоняю
Distributed query, SQL 7.0, SQL 2000
А вот почему ?

[Содержание]

Вопросы остались без ответа

StreamServe: ADOConnector
Нужны запросы.
Выполнение sp на удаленном сервере
как лучше? (про view)
Как добраться до временных таблиц с помощью SQL-DMO?
Lumigent LogExplorer 3 Buffer Overflows
Класс не зарегистрирован (ODBC error: <0s>)
Синтаксис RAISERROR
ключики dtsrun

[Содержание]

#101<<  #102

Вопросы, предложения, коментарии, замечания, критику и т.п. присылайте Александру Гладченко на адрес: mssqlhelp@pisem.net

sql.ru

Описание рассылки
 Поиск на SQL.RU
Искать: 
Результатов на странице: Формат:
Тип запроса: Раздел:
МИНИФОРМА
ПОДПИСКИ




http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное