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

MS SQL Server

  Все выпуски  

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


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


#161<<  #162

СОДЕРЖАНИЕ

1.СОВЕТЫ
1.1.Очистка метаданных в репликации слиянием
2.ССЫЛКИ НА СТАТЬИ
2.1.Статьи на русском языке
2.2.Новые и обновлённые технические статьи Microsoft
2.3.Англоязычные статьи
3.ФОРУМ SQL.RU
3.1.Самые популярные темы недели
3.2.Вопросы остались без ответа

СОВЕТЫ

Очистка метаданных в репликации слиянием

По материалам статьи: Michael R. Hotek " Purging Merge Metadata"

Таблица MSmerge_contents может стать проблемой для любого администратора баз данных, который обслуживает репликацию слиянием (Merge) достаточно много времени. Проблема состоит в том, что MSmerge_contents будет постоянно расти, если этим не управлять. Merge репликация очень интенсивно использует MSmerge_contents, что и вызывает проблемы, поскольку её размер неуклонно растёт. Это обычно проявляется в виде взаимоблокировок и существенного замедления обмена изменений в репликации. Происходит это потому, что время поиска искомых строк в таблице метаданных увеличивается вместе с увеличением её размера.
Перед тем, как непосредственно приступить к разбору сценария разрешения описанной выше проблемы, стоит понять, что происходит и почему необходимо чистить метаданные.
Главными таблицами для репликации слиянием являются: MSmerge_contents, MSmerge_tombstone и MSmerge_genhistory. В дополнение к ним, есть набор таблиц на дистрибуторе, которые не существенны для репликации слиянием, т.к. просто содержат сообщения о состоянии агентов (запуск, остановка, повтор и т.д.). Эти таблицы на дистрибуторе можно не резервировать (если у Вас только репликация слиянием), т.к. при потере их достаточно просто обновить. MSmerge_tombstone содержит по строке для каждой записи, которая была удалена в издаваемой таблице. Каждая публикация имеет в настройках период задержки. Задание на очистку удаляет всё, что старше этого периода задержки. Это относится только к сообщениям в базе дистрибутора и к строкам в таблице MSmerge_tombstone, но больше ни к каким таблицам. Когда происходит транзакция на издаваемой таблице, срабатывает триггер, который создаёт записи в таблицах метаданных слияния. Вставки и изменения отражаются в MSmerge_contents. Все новые строки получают поколение 0 (нуль). Таблица MSmerge_genhistory - краеугольный камень к системе репликации слиянием и от неё зависит производительность и гибкость репликации слиянием. Она содержит по записи для каждой строки, изменяемой в каждой статье и в каждой публикации. Когда запущен агент слияния, он считывает все строки с поколением ноль. Потом он просматривает таблицу MSmerge_genhistory и получает самое большое значение для поколения. После этого, он вычисляет следующее значение поколения на основании значений, которые он получил из MSmerge_genhistory, и пересылает строки между издателем и подписчиком. Как только они приняты, запись для каждой строки в разрезе статей, посланной в этом поколении, вставляется в таблицу MSmerge_genhistory на сервере получателе. Если запись по этой строке уже присутствует в MSmerge_genhistory, поколение модифицируется (на самом деле, это упрощение реальной схемы, которая немного сложнее, но это упрощение достаточно близко к реальности, чтобы можно было понять то, что происходит и почему).
Последний столбец в таблице MSmerge_genhistory называют coldate. Именно эта дата используется для управления метаданными репликации слиянием. Колонка coldate говорит о том, когда в последний раз была сделана модификация каждой строки, затронутой в каждой статье. Если зафиксировано 500 модификаций одной строки в MSmerge_genhistory, в MSmerge_contents будет содержаться только одна строка для всех 500 транзакций. Строка в таблице MSmerge_genhistory будет содержать поколение и время последнего изменения. MSmerge_contents всегда будет содержать только одну строку для всех 500 изменений.
На основании представленного выше упрощённого описания уже можно сделать предположение относительно того, почему замедляется репликация при увеличении размера таблиц MSmerge_contents и MSmerge_genhistory. Каждый раз после запуска агенту слияния необходимо выполнить большую работу:

  • поиск самого большого значения поколения,
  • обновление значения поколений до самого большого,
  • передача изменений между издателем и подписчиком,
  • поиск в MSmerge_genhistory соответствующих уникальных идентификаторов для строк, которые были переданы, и их обновление,
  • вставка строк в MSmerge_genhistory для всех строк, которые были затронуты впервые,
  • вставка строк в MSmerge_contents для всех строк, затронутых впервые,
  • обновление поколений и порождений для всех строк, которые были затронуты до этого.

Это огромный объем работы. Выполняя чистку старых метаданных, Вы ускоряете этот процесс, сокращая количество данных, которые агент слияния должен обработать. Это также снижает вероятность появления тупиковых блокировок в течение сеанса репликации.
С другой стороны, метаданные очень важны, если Вам когда-либо потребуется восстановить из резервной копии базу данных. Это означает, что Вы должны быть чрезвычайно осторожны при их очистке.
Автор статьи пробовал уменьшить размер MSmerge_contents до нескольких сотен тысяч строк с одновременным сокращением MSmerge_genhistory. Этого он добивался, сохраняя метаданные о поколениях изменений за последние 2 недели. Скрипт, который приводится в конце статьи, содержит таблицы и хранимые процедуры, которые использовались им для обслуживания таблиц MSmerge_contents и MSmerge_genhistory, и позволяющий оптимизировать продолжительность сеансов репликации слиянием.
В системах, администрируемых автором статьи, существует база данных, называемая admin. Единственная цель этой базы данных состоит в том, чтобы содержать все администраторские процедуры, представления и таблицы, которые используются для обслуживания сервера баз данных. Иногда, для подобных целей, используют базу данных master. Автор статьи является убеждённым противником такого подхода. Вы создаете пользователя, который привязан к пользовательской, а не к системной базе данных. Мало того, что указанный подход делает восстановление очень трудным, он вводит элемент неустойчивости в вашу систему. Аргумент использования sp_ в качестве системных процедур не проходит, потому что Вы всегда можете оформить это по-другому, просто затратив на это немного больше усилий.
Предлагаемый Вам скрипт начинается с создания базы данных admin. После этого создаются две таблицы:

  • mergepurgeflag - которая содержит по строке для каждой издаваемой и подписанной базы данных сервера, и для которых столбец-флаг может быть установлен на очистку.
  • mergepurgehistory - которая содержит по строке для каждой операции очистки, и которая фиксирует, сколько строк было очищено.

Далее, создаётся процедура, sp__mergepurgemetadata. Эта процедура произведет очистку старых метаданных, ориентируясь на период задержки, который ей передаётся.
Эта процедура выполняется с теми же самыми ограничениями, что и у стандартной процедуры sp_mergecleanupmetadata. Поскольку метаданные чрезвычайно полезны на стадии восстановления, необходимо гарантировать, что удаляемые метаданные не будут востребованы. Автор рекомендует удалять строки старше двух недель. Это позволит гарантировать, что строки были переданы всем подписчикам. Если имеются мобильные пользователи - подписчики, необходимо учесть их режим синхронизации данных. Если Вы производите чистку метаданных, которые реплицированы не всем подписчикам, эти транзакции будут потеряны. Если Вы должны восстановить базу из резервной копии которая старше чем метаданные, имеющиеся в базе данных, Вы не сможете выполнить синхронизацию после восстановления.
Эти рассуждения относятся к таблице mergepurgeflag, в которой Вы явно устанавливаете флаг в 1 только тогда, когда уверены, что все транзакции находятся в пределах указанного периода, и когда Вы осуществляете очистку, все изменения отреплицированы. Мало гарантировать, что все подписчики и издатели синхронны на это время, Вы также должны проверить ваши резервные копии. Если Вы собираетесь производить очистку метаданных, которые старше двух недель, убедитесь, что Вы имеете резервную копию, которая не старее двух недель. Перед очисткой восстановите резервную копию на другую машину, и проверьте целостность её носителя и данных. Только после того, как Вы всё это сделали, можно установить флаг purgeflag и разрешить очистку метаданных.
Представленный ниже скрипт может помочь Вам обслуживать метаданные в вашей системе и оптимизирует продолжительность сеансов репликации слиянием, повышая эффективность и снижая трафик в сети. Есть два очень важных предостережения при использовании этой процедуры.

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

Если Вы придерживаетесь этих ограничений, не возникнет никаких проблем. Если не делать этого, можно столкнуться с проблемами, которые не просто решить. Автор не несёт ответственности за результаты использования представленного ниже скрипта и за любые повреждения или потери, которую он может вызвать. Используйте этот скрипт на свой страх и риск и только после того, как Вы полностью осознает то, что Вы делаете, и чем эти действия грозят.


use master
go

create database admin
on
(name = admin_dat,
filename = 'c:\mssql7\data\admindat.mdf',
size = 10)
log on
(name = 'admin_log',
filename = 'c:\mssql7\data\adminlog.ldf',
size = 5MB)
go

use admin
go

create table mergepurgeflag
(PurgeFlag    bit not null,
DatabaseName  varchar(128)not null)
go

create table mergepurgehistory
(PurgeDate    datetime not null,
DatabaseName  varchar(128) not null,
NumRows       int not null)
go

create procedure sp__mergepurgemetadata @numdays  int = 14
as
/****************************************************************************/
/*  Stored Procedure: sp__mergepurgemetadata                                */
/*  Creation Date: 1/12/00                                                  */
/*  Copyright:  Michael Hotek                                               */
/*  Written by: Michael Hotek                 */
/*                                                                          */
/*  Purpose: This procedure will clean out generations from MSmerge_contents*/
/*           that are older than the specified number of days               */
/*                                                                          */
/*  Input Paramters:                                                      */
/*  @numdays  Number of days to retain history in MSmerge_contents          */
/*                                                                          */
/*  Output Parameters: None                                                 */
/*                                                                          */
/*  Return Status: None                                                     */
/*                                                                          */
/*  Usage: exec sp__mergepurgemetadata 21                                   */
/*                                                                          */
/*  Local Variables:                                                        */
/*       @purgedate   Cutoff date for the purge                             */
/*       @command     The SQL statement that is dynamically executing       */
/*       @database    Database to purge                                     */
/*       @numrows     Number of rows purged                                 */
/*                                                                          */
/*  Called By:                                                              */
/*    SQL Server Agent                                                      */
/*                                                                          */
/*  Calls: None                                                             */
/*                                                                          */
/*  Data Modifications:                                                     */
/*        Deletes from MSmerge_contents                                     */
/*        Deletes from MSmerge_genhistory                                   */
/*        Updates mergepurgeflag                                            */
/*        Inserts into mergepurgehistory                                    */
/*                                                                          */
/*  Updates:                                                                */
/*    Date      Author      Purpose                                         */
/*    1/12/00   Mike Hotek  Created         */
/*                                                                          */
/****************************************************************************/
declare  @purgedate   datetime,
         @command     varchar(1000),
         @database    varchar(128),
         @numrows     int

create table #temp
(NumRows   int)

select @purgedate = dateadd(dd, -1 * @numdays + 1, getdate())

declare curdb cursor for select DatabaseName 
              from mergepurgeflag where PurgeFlag = 1
open curdb
fetch curdb into @database

while @@fetch_status = 0
begin
     --Get the number of rows to remove
     select @command = 'select count(*) from ' + @database + 
                    '..MSmerge_contents a, ' + 
                       @database + 
        '..MSmerge_genhistory b 
        where a.generation = b.generation and ' + 
                       "b.coldate < '" + convert(char(10),@purgedate,101) + "'"

     insert into #temp
     exec(@command)

     select @numrows = NumRows from #temp

     truncate table #temp

     --Remove the specified generations from MSmerge_contents
     select @command = 'delete ' + @database + '..MSmerge_contents from ' + 
                    @database + '..MSmerge_contents a, ' + @database + 
        '..MSmerge_genhistory b 
        where a.generation = b.generation and ' + 
                       "b.coldate < '" + convert(char(10),@purgedate,101) + 
        "'" + ' and a.generation > 0'

     begin transaction
     exec(@command)
     commit transaction

     --Remove the specified generations from MSmerge_genhistory 
     select @command = 'delete ' + @database + 
                    '..MSmerge_genhistory where coldate < "' + 
                       convert(char(10),@purgedate,101) + 
        '" and pubid is not null'
  
     begin transaction
     exec(@command)
     commit transaction

     insert into admin..mergepurgehistory
     select getdate(), @database, @numrows

     update admin..mergepurgeflag
     set PurgeFlag = 0
     where DatabaseName = @database

     fetch curdb into @database
end

close curdb
deallocate curdb
drop table #temp
go

[В начало]

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

Статьи на русском языке

Доступ к аналитике: новые интерфейсы для OLAP
Джордж Споффорд
Исторически сложилось так, что извлечение данных (data mining) и онлайновая аналитическая обработка информации (OLAP) были исключительно прерогативой человека, т. е. именно люди определяли и создавали аналитические модели, а затем использовали полученные с их помощью результаты. Но с появлением вычислительной модели Web-служб, которые рассматриваются как универсальное средство объединения разнородных систем, картина существенно изменилась: аналитику теперь можно легко связать с другими вычислительными задачами (см. врезку «Уже не только для людей»). Другими словами, люди перестали быть единственными создателями или потребителями аналитических сервисов. Как вы понимаете, это открывает захватывающие возможности...
Консолидация dataset
А. Чекалов
Под набором данных (dataset) понимают подмножество информации, которое хранят в базе данных. Это подмножество может быть организовано в соответствии с иерархической или сетевой моделью данных [2.2]. В качестве примера реализации dataset с иерархической моделью данных можно привести класс/компонент TSQLTable dbExpress-ориентированных Delphi приложений. Он возвращает однонаправленные наборы данных. Другими словами, такие, которые допускают просмотр данных только в одном направлении. В данном случае к предыдущей записи [19.1]. В качестве примера реализации dataset с сетевой моделью данных можно привести класс/компонент TTable BDE-ориентированных Delphi-приложений. Он возвращает двунаправленные наборы данных. Другими словами, такие, которые допускают просмотр данных в напра...
Наследникам TDataSet посвящается
Андрей Евлаш
Перед заключительной сборкой проекта, желательно закрывать ненужные DataSet'ы, находящиеся на автосоздаваемых формах (и не только), чтобы...
SQL: Операции
blackman.wp-club.net
Операции и функции выполняют сходные задачи; они используют ноль или более аргументов и возвращают один или более результатов...

[В начало]

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

Adovcsp.exe Demonstrates Using Stored Procedures with ADO
BUG: ATL OLE DB Provider Fails When Called from SQL 7.0 Query
BUG: DTS Package Fails with Dynamic Properties Task and OLAP Processing Task
BUG: MSDTC Fails to Mutually Authenticate When Computers Do Not Run in the Same Domain
BUG: Slow Performance with SQLOLEDB Inserting BLOB Data into SQL Server Using Stored Procedure
BUG: SQLOLEDB May Fail with Parameterized Queries
BUG: WMI MSSQL_Table.ExportData Always Uses Standard Security
CnPool.exe Test Connection Pooling with Tempdb Objects
FIX: "CREATE INDEX" in Form Causes ASC or DESC to be Removed in an ORDER BY Clause
FIX: 70rebind.exe for Windows 2000 and MDAC Upgrades on Clustered SQL Server 7.0 Servers
FIX: A Memory Leak May Occur When Many Connections Are Made in Analysis Services
FIX: An Access Violation May Occur When You Run an INSERT Statement in an nText Column
FIX: Cannot Use Non-Administrator Account to Start SQL Server and Force Encryption
FIX: Correlation Error Using Parameters.Refresh with SQLOLEDB
FIX: MDAC 2.6 SQLOLEDB Provider Running on Windows 2000 Returns No Error Text Description
FIX: Problems Occur When Connecting to SQL Server from ADO Application
FIX: Rebuildm and Setup Do Not Expose All the SQL Collations
FIX: SQL Server 2000 May Be More Aggressive with Lazy Writes Than SQL Server 7.0
FIX: SQL Server 2000 Uninstall Option Does Not Remove All Files
FIX: SQL Server CE Is Missing the Oledb.lib File for eMbedded Visual C++ 4.0
FIX: SQL Server Does Not Start and an Access Violation Occurs After You Install SQL Server 2000 Service Pack 3
FIX: SQL Server ODBC Driver Reuses Incorrect Parameter Length
FIX: SQLDescribeParam Causes Syntax Error or Access Violation
FIX: Upgrade from SQL Server 7.0 May Abort with Messages.sql and You Cannot Connect to SQL Server
FIX: Upgrade to SQL Server Fails When MSDE Installed from MOD
FIX: xp_readmail Returns NULL in the attachment Column If the Attachment's Type Is Message Format
How to Obtain SQL Server 6.5 Programmer's Toolkit and Vbsql.ocx
HOW TO: Automate Replication over a Dial-Up Connection
HOW TO: Cluster SQL Server 2000 Analysis Services in Windows 2000
HOW TO: Configure Memory for More Than 2 GB in SQL Server
HOW TO: Connect to Microsoft Desktop Engine
HOW TO: Identify Your SQL Server Service Pack Version and Edition
HOW TO: Move Databases Between Computers That Are Running SQL Server
HOW TO: Troubleshoot Differences Between An Application and ISQL
HOW TO: Troubleshoot Error 15401
HOW TO: Troubleshoot Slow-Running Queries on SQL Server 7.0 or Later
HOW TO: Troubleshoot SQL Server Error 8645
HOW TO: Troubleshoot the "Cannot Generate SSPI Context" Error Message
HOW TO: Troubleshoot the Performance of Ad-Hoc Queries
HOW TO: Use DTS Package Events in Visual Basic .NET
HOW TO: Use the Server Name Parameter in a Connection String to Specify the Client Network Library
HOWTO: Rebuild or Move MSDTC Used with a SQL Failover Cluster
HOWTO: Rebuild the MASTER Database on a Virtual SQL Server 2000 Instance
HOWTO: Run SQL Server Stored Procedures from an ASP Page
HOWTO: SQL Server 7 Distributed Query Using ATL OLEDB Consumer
Ident.exe Retrieves @@IDENTITY From ODBC Inserts
INF: "DBCC TRACEON (208)" Messages in the Error Log When Using MSQuery
INF: Building OLE DB Applications for SQL Server CE and Windows CE .NET
INF: Cannot Apply Service Pack to Evaluation Edition
INF: Cascading Deletes and Updates of Primary Keys
INF: Clustered SQL Server Do's, Don'ts, and Basic Warnings
INF: Consideration for a Virus Scanner on a Computer That Is Running SQL Server
INF: Customizing SQL/MSDE Unattended Installation Files
INF: Execute a SQL Server DTS Package from Active Server Pages
INF: Frequently Asked Questions - SQL Server 2000 - Log Shipping
INF: Frequently Asked Questions - SQL Server 2000 - Setup
INF: How to Determine When an Unattended SQL Server 7.0/MSDE 1.0 Setup is Complete
INF: How To Enable Analysis Server to Use 3 GB of RAM
INF: How to Secure Network Connectivity for SQL Server 2000 Local Databases
INF: How to Suppress the Appshelp Message in an Unattended Installation
INF: Index Tuning Wizard Best Practices
INF: Job to Monitor SQL Server 2000 Performance and Activity
INF: List of Version Numbers of ODBC Driver Manager and SQL Server
INF: Operating System Commands and Control of Flow in ISQL or OSQL
INF: Order of Installation for SQL Server 7.0 Clustering Setup
INF: Performance Considerations for an Upgrade from SQL Server 6.5
INF: Permissions That You Must Have to Administer an OLAP Server
INF: Potential Causes of the "SQL Server Does Not Exist or Access Denied" Error Message
INF: Running OLAP Services on a Domain Controller
INF: SQL Server 2000 Release A Replaces SQL Server 2000
INF: SQL Server 7.0 Security Update for Service Pack 4
INF: SQL Virtual Server Client Connections Must be Controlled by Clients
INF: TCP Ports Needed for Communication to SQL Server Through a Firewall
INF: The Microsoft Support Policy for a SQL Server Failover Cluster
INF: Tips for Debugging Stored Procedures from Visual Basic
INF: Troubleshooting SQL Cluster Wizard Failures
INF: Troubleshooting SQLMail with Post Offices
INF: Understanding and Resolving SQL Server 7.0 or 2000 Blocking Problems
INF: Upgrade to SQL Server 2000 Failover Solution Recommended for All Non-SQL Server 2000 Virtual Servers
INFO: ODBC Client Error After Connecting Using MDAC SQL Server Driver
PRB: 8198 Error Message Returned from Job Owned by Windows NT Authenticated User
PRB: Call to SQL Stored Procedure Returns 'Invalid Column Name'
PRB: Common Causes of Error Message 844 or Error Message 845 (Buffer Latch Time Out Errors)
PRB: Crystal Report in Web Application Fails to Log On to SQL Server
PRB: Distributed Query Against Oracle 8.x Fails
PRB: E_FAIL Returned from Prepare() When SQL Statement Contains a Parameter in a Subquery
PRB: Error 17882 "Error Accepting Connection Request via Net-Library 'SSNETLIB'. Execution Continuing" When You Connect to SQL Server
PRB: Error Message 4062: "Cannot open user default database <ID>. Using master database instead."
PRB: Error Message: "Setup was unable to validate the logged user..." Occurs When You Install SQL Server 2000 Service Pack 3 (SP3)
PRB: Error Message:"Bind Failed" Occurs After IP Address Changes on a Cluster
PRB: Full Text Resource Fails to Come Online on a Cluster with "Event ID 1069 :SQL Cluster Resource 'Full Text' failed" Error Message
PRB: MDAC 2.6/2.7 Roll Back Installation or Get Error on Install
PRB: ODBC Connection Failed: SQLState: '08001' DBMSSOCN
PRB: Second Parameterized Command Fails with Server Cursor
PRB: SQL Server 2000 Cluster Setup May Fail to Perform Required Operations on the Cluster Nodes When Special Characters are Used in the Resource Name
PRB: SQL Server 2000 Installation Fails with "...previous program installation..." Error Message
PRB: SQLAGENT Job Waiting on Worker Thread
PRB: Stored Procedure Calls May Result in Attentions Being Seen on SQL Server
PRB: Unsecured SQL Server with Blank (NULL) SA Password Leaves Vulnerability to a Worm
PRB: Upgrade from SQL Server 6.5 Fails During "Import and Export" Step
PRB: Windows Server 2003 Support for SQL Server 2000
SAMPLE: Embedcgi.exe CGI Application Shows How to Use Embedded SQL
SAMPLE: How to Retrieve Data Using a SQL XML Query in ATL OLE DB
SAMPLE: How to Retrieve Data Using a Template File in ATL OLE DB
SAMPLE: How To Retrieve XML Data Using an XPath Query with ADO in Visual C++
SQL Server Utility Files Available
Support WebCast: Dynamic Dimension Security in Microsoft SQL Server 2000 Analysis Services
Support WebCast: Microsoft SQL Server: Delivering Messages with SQL Server 2000 Notification Services
Support WebCast: The DTS Multiphase Data Pump

[В начало]

Англоязычные статьи

Save Database Trips
Bill Wagner
Use the System.Data.DataSet class to ease database code creation and deliver more features. Technology Toolbox: C#, SQL Server 2000, ADO.NET. The .NET Framework System.Data.DataSet class contains features that can save you time when you create database-enabled applications. Using the DataSet class makes your application more robust when the database changes or moves to a Web service. It also limits bottlenecks at the database because the connection doesn't need to be open as often
Where Do I Want To Go Today? - Included Indexes
Steve Jones
Taking a note from Microsoft's own page, I've decided to share some of my wishes for where I want SQL Server to go. Today. Meaning this is what I'm looking for now, the things that I'd like to see implemented in future releases. Now I missed the Yukon preview and haven't read too terribly much on it, so I may be asking for something that's coming. If it's not under NDA, let me know
Analysis Services optimization tips
Alexander Chigrik
Here are fifteen little known tips that you can use to ensure your Analysis Services are performing in the most efficient manner possible
SQL Server CE RDA replication configuration
Derek Mitchell
I have been meaning to add some more SQL Server for CE content for a while but my development PC has had the latest CE ver 1.1 loaded. This presented a problem since I wanted to do the tutorial with ver 1.0 as that is what most of you are running
Deliver SQL Data As Web Services
Roger Jennings
Safely connect .NET, VB6, and Office clients to SQL Server stored procedures over your intranet or the Internet. For This Solution:, SQL Server 2000, SQLXML 3.0, Visual Studio .NET, Visual Basic 6.0, Microsoft SOAP Toolkit Version 3, Office XP Web Services Toolkit 2.0, Internet Information Services (IIS)
Customize SQLXML 3.0 SOAP Messages
Roger Jennings
Design SQL Server stored procedures to structure XML business documents you publish with SQLXML 3.0 Web services. Technology Toolbox: VB.NET, SQL Server 2000, XML. Microsoft's SQLXML 3.0 is a powerful tool for rendering SQL Server 2000 relational data as structured XML documents within SOAP 1.1 response-message payloads. My earlier articles about SQLXML 3.0 emphasize generating document/literal XML Web services from existing stored procedures or table-returning functions (see Additional Resources). These articles also explain how to set up SQLXML 3.0 SOAP virtual directories and test SQLXML Web services with .NET WebService Studio. In this article, I'll show you how to write Transact-SQL (T-SQL) code to return complex XML business documents that conform to a predetermined hierarchical design or XML schema. The examples use the sample Northwind SQL Server 2000 or NorthwindCS MSDE 2000 database, but the design principles apply to most common business documents, such as sales orders, invoices, requisitions, purchase orders, and medical reports
Get Ready for Yukon
Roger Jennings
The next release of SQL Server promises increased developer productivity and reduced DBA workload. For This Solution: SQL Server "Yukon" Beta, Visual Studio .NET "Whidbey" Beta, InfoPath Beta, SQL Server Reporting Services Beta (when available). The next release of Microsoft SQL Server, code-named "Yukon," will reshape the Windows relational database management system (RDBMS) landscape. Yukon promises to incorporate the benefits of native XML and object-oriented databases within a fully programmable relational database framework. A new Reporting Service, support for InfoPath (formerly XDocs) data-entry forms, and Transact-SQL (T-SQL) enhancements round out Yukon's new feature set. David Campbell, Microsoft's product unit manager for the SQL Server engine, gave .NET developers a Yukon preview at VSLive! San Francisco this past February. In this article, I'll analyze Campbell's "Database of the Future: A Preview of Yukon and Other Technical Advancements" keynote address from an IT management and SQL Server DBA perspective. Additional details for some new Yukon features come from transcripts of earlier SQL Server chat sessions
Fixes Ferret Out SQL Server Bugs
Lisa Vaas
Microsoft Corp. has put out hot fixes for two known bugs in its SQL Server database software. The first bug is explained in a Microsoft online article entitled "FIX: Cannot Remove Microsoft SQL Server 2000 Desktop Engine After You Upgrade to MSDE 2000 SP2". According to the article, users who originally used a particular build of MSDE and then upgraded to MSDE 2000 SP2 (Service Pack 2) cannot remove MSDE 2000 from their computers
Problem Solving With Information Schema Columns
Joseph Sack
Information Schema Views were introduced in Microsoft SQL Server 2000. They provide a method of querying database meta-data without directly accessing system tables. Information Schema Views are less cryptic than system tables (no type code or bit map translations), and require fewer table joins within a query, depending on the data you are interested in
SQL and Java Go on a Date
Christoffer Hedgate
Lately I've been working on a Java application, specifically a search engine implementation, where I needed to work with data from a SQL Server database. The company I work for have a Java based platform for implementing search engines and I've worked with it much before, but this was the first time that the search engine I was implementing was to index and search data stored in a SQL Server database. Working with one of the indexes I encountered some problems and learned a few experiences, so I thought I'd share these in this article. The index in question was one that contained dates, i.e. a column with data type datetime in SQL Server
Scheduling SQL Server Traces - Part 2
Rahul Sharma
This is the second part of the article on how to schedule traces using stored procedures in SQL Server 2000. The previous article was for SQL Server 7.0. SQL Profiler uses system stored procedures to create traces and send the trace output to the appropriate destination. These system stored procedures can be used from within your own applications to create traces manually, instead of using SQL Profiler. This allows you to write custom applications specific to the needs of your enterprise. In the case of SQL Server 2000, the server side traces are not done using the extended stored procedures anymore (as in SQL Server 7.0) but through system procedures which expose the underlying architecture used to create these traces. You can read more on that in BOL
Examples of how to Calculate Different SQL Server Dates
Gregory A. Larsen
Every now and then, you need to take the current date and calculate some other date. For instance, you might have an application that needs to determine what date is the first day of the month, or need to know the last day of the month. Now most of you probably already know how to separate the date into its piece (year, month, day, etc.) and use those pieces along with a number of functions to calculate a date that you might need. In this article, I will be showing how to use just the DATEADD and DATEDIFF function to calculate a number of different dates you might need to use in your applications
SQLISAPI and XML Client-Side Processing (XML and SQL part 10)
Marcin Policht
Throughout the most recent articles of this series, we have been covering a range of new features introduced in SQLXML 2.0. We are continuing this trend by presenting the client-side XML processing
A Comparison of SQL Server 2000 with DB2 v8.1
Alexander Chigrik
Often people in newsgroups ask about a comparison of DB2 and Microsoft SQL Server. In this article I will compare SQL Server 2000 with DB2 Universal Database version 8.1 regarding price, performance, platforms supported, SQL dialects, and products limits
Who Needs Change Management?
Greg Robidoux
You’ve spent thousands of dollars on that cool technology; clustering, redundant controllers, redundant disks, redundant power supplies, redundant NIC cards, multiple network drops, fancy tape backup devices and the latest and greatest tape technology. You’re all set. There’s no way your going to have downtime

[В начало]

ФОРУМ SQL.RU

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

Новые упражнения на http://sql.ipps.ru
Нужны умные мысли...
Проверка производительности SQL Server?
Большой объем данных на MS SQL
Аудит изменений таблицы
"for xml explicit" Постоение дерева по id и parent
Как запретить изменение поля типа timestamp при update?
Четыре SCSI-диска. Как распорядиться ?
MSSQL и Web. Вопрос практикам - кто какие технологии использует?
Теряются данные из SQL Сервера ПОМОГИТЕ!!!!
Сервер произвольно встает
Сериализация вызовово процедур
Guid
Проблема с DTSRun.
Помогите написать синтаксически верную прощедуру
Транзакция существенно увеличивает скорость обработки?
Ошибка в SQL "Invalid cursor state"
XML explicit
Начал глючить SQL Server
Количество строк в таблице

[В начало]

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

Перезапуск SQLя
SQL и SSL
Спасибо за ответ! !!!!!!! Новый вопрос!!!
Репликация с FTP
'Log Shipping Restore - please help...
ERROR:Invalidobject name 'master..spt_values'
Как поменять шкалу в графике в Crystal Reports ???
Проблема с DTS
Про filegroup
SQL Server clustered and Terminal Service Administrative mode
Вопрос про репликацию
Linked Server
как вернут обратно файловую структуру БД SQL 7.0
Проблемы в SQL 2000+sp3 после перехода на Windows 2003

[В начало]


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

sql.ru Описание рассылки

МИНИФОРМА
ПОДПИСКИ




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

В избранное