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

MS SQL Server

  Все выпуски  

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


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

#204<<  #205

СОДЕРЖАНИЕ

1.СОВЕТЫ
1.1.Повышение доступности SQL Server 2000: Failover кластеры (Продолжение)
1.2.SQL Server: соглашения при программировании баз данных, советы и лучшие методики
2.ССЫЛКИ НА СТАТЬИ
2.1.Англоязычные статьи
3.ФОРУМ SQL.RU
3.1.Самые популярные темы недели
3.2.Вопросы остались без ответа
4.ПОЛЕЗНОСТИ
4.1.Базы данных: Введение в теорию и методологию.

СОВЕТЫ

Повышение доступности SQL Server 2000: Failover кластеры. (Продолжение)

По материалам статьи Microsoft: SQL Server 2000 High Availability Series: Implementing Failover Clustering

Содержание

Возврат на основной узел после отработки отказа

В кластере с одним экземпляром, зачастую нет необходимости после отказа возвращать экземпляр на первоначальный узел. Если Вы используете симметричные серверы, которые предназначены для одного приложения, их работа будет выполняться одинаково на любом из узлов. Возвращение экземпляра назад приведёт только к лишнему простою.
Если в кластере несколько экземпляров, то два экземпляра SQL Server, работая после отказа на одном узле, могут показывать производительность хуже, чем при работе на разных узлах. В таком случае, нужно выбрать такое время для возврата, когда минимальна активность клиентов.
Вы можете так настроить MSCS, что он будет автоматически после восстановления из отказа возвращать экземпляр на первоначальный узел. Однако, побочным эффектов будет простой других сервисов во время проведения возврата. Кроме того, если первоначальный узел не готов к поддержанию работоспособности узла, будет затрачено дополнительное время на обратное перемещение. Поэтому использование автоматического возврата не всегда эффективно при обеспечении высокой доступности.
Автоматический возврат допустим, когда приемлем длительный простой из-за повторного возврата экземпляра.

[В начало]

Настройка автоматического возврата в заданное время

1. Нажмите кнопку Start, выберите пункт Programs, а затем запустите оснастку Cluster Administrator.
2. В Cluster Administrator, нажмите правую кнопку мыши на группе, содержащей SQL Server.
3. Выберите пункт Properties.
4. На закладке Failback, установите день и время, когда Вы хотите выполнить возврат.
Руководствуйтесь при выборе времени возврата тем, что бы можно было при неудачном возврате вернуть экземпляр обратно и при этом наименьшим образом помешать работе клиентов.

[В начало]

Инициализация возврата

1. Нажмите кнопку Start, выберите пункт Programs, а затем запустите Cluster Administrator.
2. В Cluster Administrator, нажмите правую кнопку мыши на группе, содержащей SQL Server.
3. Выберите Move Group.

[В начало]

Восстановление узла кластера после полного выхода из строя (катастрофы)

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

[В начало]

Восстановление сервера после краха

1. На выжившем узле, удалите потерпевший крах узел из состава виртуального сервера. Если Вы имеете на узле более одного виртуального сервера, внесите такие изменения во всех виртуальных серверах.
2. На выжившем узле необходимо выселить отказавший узел кластера.
3. Восстановите отказавший узел.
4. Установите на нём SQL Server.

[В начало]

Удаление узла из виртуального сервера

1. Вставьте CD диск SQL Server 2000 Enterprise Edition.
2. В появившемся окне программы установки SQL Server 2000 Enterprise Edition, выберите SQL Server Components, а затем запустите Install Database Server.
3. В окне Welcome мастера установки Microsoft SQL Server нажмите кнопку Next.
4. В окне Computer Name введите имя виртуального сервера, выберите Virtual Server, а затем нажмите Next.
5. Пропустите установку Advanced Options и нажмите Next.
6. Пропустите установку Maintain a Virtual Server for Failover Clustering и нажмите Next.
Обратите внимание на то, что если сервер недоступен, Вы получите следующее сообщение об ошибке: "One or more nodes of Virtual Server are unavailable. Setup cannot modify the virtual server's IP address resource".
7. На странице с этим сообщением об ошибке нажмите кнопку OK.
8. В окне Virtual Server Information нажмите кнопку Next.
9. В окне Cluster Management, выберите отказавший узел, а затем выберите Remove. Нажмите кнопку Next.
10. В окне Remote Information введите имя и пароль системной учётной записи администратора всех узлов кластера. Нажмите Next.
11. В появившемся окне сообщения нажмите Yes.
12. Нажмите кнопку Finish.

[В начало]

Выселение узла из кластера

1. Нажмите кнопку Start, выберите Programs, а затем запустите Cluster Administrator.
2. В Cluster Administrator, нажмите правую кнопку мыши на отказавшем узле, а затем выберите Evict Node. Нажмите OK.
3. Покиньте Cluster Administrator.

[В начало]

Восстановление узла

1. Переустановите Windows, подключитесь к серверу - контроллеру домена и примените самые последние сервисные пакеты для Windows, установленном на новых аппаратных средствах.
2. Настройте учетную запись пользователя домена для управления кластером. Для получения более подробной информации о такой учётной записи, см. раздел "Настройка учётных записей, выбор имён и получение IP адресов", опубликованный ранее в этой статье.
3. Настройте сетевые платы локальной сети и сигналов жизни.
4. Установите и настройте MSCS как для дополнительного узла. Для получения более подробной информации об этом, см. раздел "Установка MSCS на дополнительном узле кластера", опубликованный ранее в этой статье.

[В начало]

Добавление восстановленного узла в виртуальный сервер

1. Вставьте CD диск SQL Server 2000 Enterprise Edition в привод CD-ROM любого узла кластера. Вы можете добавить восстановленный узел в виртуальный сервер с любого узла кластера.
2. В запустившемся окне программы установки SQL Server 2000 Enterprise Edition, выберите SQL Server Components, а затем запустите Install Database Server.
3. В окне Welcome мастера установки Microsoft SQL Server нажмите кнопку Next.
4. В окне Computer Name введите имя виртуального сервера, выберите Virtual Server, а затем нажмите Next.
5. В окне Installation Selection, выберите Advanced Options и нажмите Next.
6. Пропустите Maintain a Virtual Server for Failover Clustering, нажав Next.
7. В окне Virtual Server Information нажмите Next.
8. В окне Cluster Management, выберите новый узел, нажмите Add, а затем нажмите Next.
9. В текстовом поле Username, укажите учетную запись пользователя домена, которая должна является администратором каждого узла, участвующего в виртуальной конфигурации сервера. Введите пароль в поле Password, впишите имя домена в поле Domain, а затем нажмите кнопку Next.
10. В окне Services Accounts, укажите учетную запись пользователя домена, её пароль и домен в соответствующих текстовых полях, а затем нажмите Next.
11. Нажмите кнопку Finish, когда установка будет завершена. Повторите этот процесс для каждого экземпляра.
Обратите внимание, что после установки SQL Server 2000 и присоединения его к виртуальному SQL Server, нужно применить соответствующий сервисный пакет для SQL Server на восстановленном узле. Все узлы должны иметь одинаковые сервисные пакеты.

[В начало]

Ссылки

Для получения подробной информации о темах, описываемых в этой статье, обратитесь к следующим документам:

[В начало]

SQL Server: соглашения при программировании баз данных, советы и лучшие методики

По материалам статьи Vyas Kondreddi: SQL Server Database Coding Conventions, Best Practices and Programming Guidelines
Перевод Виталия Степаненко

Базы данных являются сердцем и душой многих приложений на предприятиях, и очень важно обращать особое внимание на программирование баз данных. Я видел много случаев, когда программирование баз данных пускается на самотек, т.к. считается, что это что-то легкое и может быть сделано любым пользователем. Это неверно.

Для лучшей работы с базами данных Вам нужны настоящий администратор баз данных и специалист по программированию баз данных, причем не важно, что вы используете: Microsoft SQL Server, Oracle, Sybase, DB2, или что-то еще! Если у Вас нет специалистов по базам данных во время разработки, это часто оканчивается тем, что базы данных становятся узким местом при повышении производительности системы. Я решил написать эту статью, чтобы соединить вместе лучшие методы программирования баз данных, так, чтобы это было полезно и администраторам, и разработчикам баз данных.

Здесь представлены советы и методики, позволяющие повысить качество разработки, производительность и простоту обслуживания. Этот список сейчас еще далеко не полный, и будет постоянно обновляться. Хочу высказать отдельное спасибо Tibor Karaszi (SQL Server MVP) и Linda (lindawie) за то, что они нашли время прочитать эту статью и выдать свои предложения по ее улучшению.

- Утвердите соглашения по наименованию объектов базы данных, сделайте их стандартом для всей вашей организации, и будьте последовательны в их использовании. Это поможет сделать Ваш код более читабельным и понятным. Нажмите на эту ссылку, чтобы увидеть соглашения по наименованию объектов базы данных, которых я придерживаюсь.

- Убедитесь, что Ваши данные находятся хотя бы в 3 нормальной форме. В то же время, производительность запросов не должна страдать. Небольшая денормализация помогает быстрому выполнению запросов.

- Создавайте подробные комментарии в Ваших хранимых процедурах, триггерах и особенно в SQL скриптах, когда что-либо не является очевидным. Это сделает Ваш код понятным для других программистов. Не переживайте за длину Ваших комментариев, т.к. это не повлияет на производительность, в отличие от других интерпретаторов, таких, как ASP 2.0.

- Не используйте выражение SELECT * в Ваших запросах. Всегда указывайте названия столбцов после оператора SELECT, например: SELECT CustomerID, CustomerFirstName, City. Этот способ обеспечивает меньшее количество дисковых операций и лучшую производительность.

- Старайтесь избегать серверных курсоров, насколько это возможно. Всегда используйте 'подход, основанный на выборках' вместо 'процедурного подхода' для доступа к данным и их изменения. Часто можно избежать применения курсоров, пользуясь командой SELECT.

Если не получается избежать использования курсора, то используйте цикл WHILE. Я проводил сравнение и пришел к выводу, что цикл WHILE обычно работает быстрее, чем курсор. Но чтобы заменить курсор циклом WHILE, Вам понадобится столбец (первичный или уникальный ключ), чтобы уникально идентифицировать каждую строку. По моему мнению, первичный или уникальный ключ должна иметь каждая таблица. Нажмите на эту ссылку, чтобы увидеть несколько примеров использования цикла WHILE.

- По возможности избегайте создавать временные таблицы при обработке данных, потому что создание временных таблиц означает большее количество дисковых операций. Вместо временных таблиц лучше максимально используйте дополнительные возможности SQL, представления, табличные переменные SQL Server 2000 и вторичные таблицы.

- Старайтесь избегать использовать специальные символы в начале слова при поиске при помощи оператора LIKE, так как это приводит к сканированию индекса, что противоречит цели создания этого индекса. Следующее выражение приводит к сканированию индекса (index scan), тогда как второе выражение приводит к поиску в индексе (index seek):

SELECT LocationID FROM Locations WHERE Specialities LIKE '%pples'
SELECT LocationID FROM Locations WHERE Specialities LIKE 'A%s'

Также избегайте использовать в поиске операторы неравенства <> и NOT, т.к. это тоже приводит к сканированию индекса.

- Используйте вторичные таблицы (derived tables) когда только возможно, так как они выполняются быстрее. Обратите внимание на следующий запрос, который выдает вторую наибольшую зарплату из таблицы Employees:

SELECT MIN(Salary)
FROM Employees
WHERE EmpID IN
(
SELECT TOP 2 EmpID
FROM Employees
ORDER BY Salary Desc
)

Тот же запрос может быть переписан с использованием вторичной таблицы, как показано ниже, и будет выполняется в 2 раза быстрее, чем предыдущий запрос:

SELECT MIN(Salary)
FROM
(
SELECT TOP 2 Salary
FROM Employees
ORDER BY Salary DESC
) AS A

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

- Когда Вы разрабатываете Вашу базу данных, всегда помните о производительности. Вы едва ли сможете улучшить производительность позже, когда ваша база данных будет находиться в рабочем режиме, т.к. это требует перестройки таблиц и индексов, переписывания запросов, и т.д. Используйте план выполнения запросов в Query Analyzer или команды SHOWPLAN_TEXT или SHOWPLAN_ALL для анализа Ваших запросов. Убедитесь, что Ваши отчеты выполняют поиск по индексу (index seek) вместо сканирования индекса (index scan) или таблицы (table scan).

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

- Добавляйте имя владельца перед именем таблицы, т.к. это повышает читабельность и позволяет избежать путаницы. Microsoft SQL Server Books Online указывает на то, что добавление имени владельца в имя таблицы даже помогает при повторном использовании плана исполнения, увеличивая производительность.

- Добавляйте SET NOCOUNT ON в начало ваших SQL скриптов, хранимых процедур и триггеров при их выполнении в рабочем режиме, т.к. это убирает сообщения типа '(1 row(s) affected)' после выполнения команд INSERT, UPDATE, DELETE и SELECT. Это увеличивает производительность хранимых процедур, снижая трафик.

- Используйте более читабельные ANSI-Standard объединения (joins) вместо объединений в старом стиле. С ANSI объединениями выражение WHERE используется только для фильтрации данных, тогда как с объединениями в старом стиле выражение WHERE используется и для объединения, и для фильтрации. В первом из следующих двух запросов используется объединение в старом стиле, а во втором - объединение с новым синтаксисом ANSI:

SELECT a.au_id, t.title
FROM titles t, authors a, titleauthor ta
WHERE
a.au_id = ta.au_id AND
ta.title_id = t.title_id AND
t.title LIKE '%Computer%'

SELECT a.au_id, t.title
FROM authors a
INNER JOIN
titleauthor ta
ON
a.au_id = ta.au_id
INNER JOIN
titles t
ON
ta.title_id = t.title_id
WHERE t.title LIKE '%Computer%'

- Не указывайте перед именами Ваших хранимых процедур "sp_". Приставка sp_ зарезервирована для системных хранимых процедур, которые поставляются вместе с SQL Server. Если процедура начинается с sp_, то SQL Server в первую очередь пытается найти ее в базе данных master, потом ищет по указанным базе данных или владельцу, после этого ищет среди процедур с владельцем dbo. Поэтому Вы действительно можете сэкономить время на поиске хранимых процедуры, избегая приставки "sp_".

Представления в основном используются, чтобы показать определенные данные определенным пользователям, которым нужны эти данные. Представления также используются для ограничения доступа к базовым таблицам через выдачу прав только на использование представлений. Еще одно полезное свойство представлений - это то, что они упрощают запросы. Заключите Ваши часто используемые сложные объединения и расчеты в представление, чтобы не повторять эти объединения и расчеты во всех Ваших запросах. Вместо этого Вы просто сделаете выборку из представления.

- Используйте пользовательские типы данных (User Defined Datatypes), если какой-либо столбец постоянно встречается в таблицах, чтобы тип данных этого столбца совпадал во всех этих таблицах.

- Не позволяйте Вашим клиентским приложениям запрашивать данные или манипулировать данными напрямую, используя команды SELECT или INSERT/UPDATE/DELETE. Вместо этого создайте хранимые процедуры и дайте Вашим приложениям доступ к этим процедурам. Это делает политику доступа к данным прозрачной и единой для всех модулей Вашего приложения, и одновременно сосредотачивает бизнес-логику внутри базы данных.

- Старайтесь не использовать типы данных TEXT и NTEXT для хранения текстовой информации больших объемов. Тип данных TEXT имеет некоторые врожденные проблемы. Например, Вы не можете напрямую писать или изменять текстовые данные, используя команды INSERT или UPDATE. Вместо Вы вынуждены использовать специальные команды, такие, как READTEXT, WRITETEXT и UPDATETEXT. Существует также множество ошибок, возникающих при репликации таблиц, содержащих столбцы с текстовыми данными. Поэтому если Вам не нужно хранить больше 8 килобайт текста, используйте типы данных CHAR (8000) или VARCHAR(8000).

- Если у Вас есть выбор, не храните двоичные или графические файлы (Binary Large Objects - BLOBы) внутри базы данных. Вместо этого храните в базе данных путь к двоичному или графическому файлу, хранящемуся где-нибудь на сервере. Получать эти большие двоичные файлы и манипулировать ими удобнее вне базы данных. В конце концов, база данных вообще не предназначена для хранения файлов.

- Используйте тип данных CHAR только для столбцов с ограничением NOT NULL. Если столбец CHAR позволяет хранить значение NULL, то это рассматривается в SQL Server 7.0+ как столбец с фиксированной длиной. Столбец с типом данных CHAR(100), в котором разрешено хранение значений NULL, занимает все 100 байт, что приводит к неоправданной потере дискового пространства. Поэтому используйте в этой ситуации VARCHAR(100). Конечно, столбцы переменной длины обрабатываются несколько дольше, чем столбцы с фиксированной длиной. Для получения оптимального варианта тщательно выбирайте между CHAR и VARCHAR в зависимости от длины данных, которые вы собираетесь хранить.

- По возможности избегайте динамических SQL запросов. Динамический SQL медленнее, чем статический SQL, т.к. SQL Server вынужден создавать план исполнения каждый раз во время работы. Можно воспользоваться операторами IF и CASE, чтобы избежать использования динамического SQL. Другим большим недостатком использования динамического SQL является то, что он требует от пользователей иметь прямые права доступа ко всем объектам в динамическом запросе, например, к таблицам и представлениям. Обычно, пользователи имеют доступ к хранимым процедурам, которые ссылаются на таблицы, но не напрямую к этим таблицам. В этом случае динамический SQL не работает. Например, пользователь dSQLuser добавлен в базу данных pubs и имеет доступ к процедуре dSQLproc, но не имеет доступа ни к одной таблице в базе данных pubs. Процедура dSQLproc выполняет команду SELECT на таблице titles, и это работает. Другое выражение в этой процедуре запускает тот же SELECT на таблице titles, используя динамический SQL, и это не удается из-за следующей ошибки:

Server: Msg 229, Level 14, State 5, Line 1
SELECT permission denied on object 'titles', database 'pubs', owner 'dbo'.

Чтобы воспроизвести эту проблему, используйте следующие команды:

sp_addlogin 'dSQLuser'
GO
sp_defaultdb 'dSQLuser', 'pubs'
USE pubs
GO
sp_adduser 'dSQLUser', 'dSQLUser'
GO
CREATE PROC dSQLProc
AS
BEGIN
SELECT * FROM titles WHERE title_id = 'BU1032' --This works
DECLARE @str CHAR(100)
SET @str = 'SELECT * FROM titles WHERE title_id = ''BU1032'''
EXEC (@str) --This fails
END
GO
GRANT EXEC ON dSQLProc TO dSQLuser
GO

Теперь подключитесь к базе данных pubs, используя логин dSQLuser, и выполните процедуру dSQLproc, чтобы увидеть проблему.

ОКОНЧАНИЕ СЛЕДУЕТ

[В начало]

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

AWE Memory SQL Server Performance Tuning Tips
Hari Prasad Krishna Pillai
If you are using SQL Server 2000 Standard Edition under Windows NT 4.0 or Windows 2000 (any version), or are running SQL Server 2000 Enterprise Edition under Windows NT 4.0 or Windows 2000 Server, or if your server has 4GB or less of RAM, the "awe enabled" option should always be left to the default value of 0, which means that AWE memory is not being used.
Making good use of Sysforeignkeys table -- Part 2 Check Table Relation
Jeffrey Yao
When I sometimes have to review the design of a database which has been survived for a long time with various DBAs / developers adding a few tables here, modifying some columns there, and deleting some constraints anywhere, I must say I always try to find as many problems as possible and in a time as short as possible. So I can proudly declare that this database is no longer worth survival and my employer should be given the contract to rebuild the database for, you know, a big cash. :) (just kidding, I never risk my reputation.)
Five myths of data mining
Arlene Zaima
Many successful companies have discovered that the myths that have grown up around data mining are just that: myths. Rather than fall victim to them, the visionaries have gleaned enormous competitive advantage by using data mining to solve complex business problems and reach for profitability.
Case Study: Realtime Trader Seeks 64-Bit Realtime Database
Jacqueline Emigh
Learn how one company is using the next version of SQL Server. Rebecca Lewis of Townsend Analytics is a pivotal behind-the-scenes figure in an environment of fast-paced online trading. The IT systems director seeks a database that can keep completely up to speed. Lewis hopes that the 64-bit edition of SQL Server 2005, formerly codenamed Yukon, will prove itself able to do this job. So far, however, SQL 2005 isn't available for beta testing in 64-bit mode.
Sorting Retrieved Data from SQL Databases
Ben Forta
In this lesson, taken from Sams Teach Yourself SQL in 10 Minutes, you will learn how to use the SELECT statement's ORDER BY clause to sort retrieved data as needed.
Backup Scenarios for successful SQL Server Restores and Recovery
Bilal Ahmed, Kiran Kumar and Vas Srinivasan
The intent of this document is to explore various backup scenario plans for SQL servers and come up with a recommendation to successfully restore them when the need arises. Database Administrators (DBAs) typically spend most of their time working on configuring and monitoring backup plans, but rarely take adequate time to test the restore path. DBAs should ask how confident they are that the backed up data can be restored when the need arises. The typical problem faced by DBAs is that they have to handle an ocean of backup sets and don't know where to begin. More often, they spend hours trying to restore but end up restarting different series of backup files. All these lead to more downtime and data loss, in spite of having access to successful backups.
MDX in Analysis Services: Mastering Time: Period - to - Date Aggregations
William Pearson
In our last article, Mastering Time: Change across Periods, we began a focus on the Time dimension from the perspective of our MDX queries. Our intent, then and in subsequent articles, is to begin an exploration of ways to effectively report change over time, as well as to accumulate those changes to present snapshots, trends and other time-based metrics in a precise manner to meet typical business requirements.
SQL Server 2000 Security - Part 6 - Ownership and Object Permissions
Marcin Policht
We have described, so far, authorization based on a predefined fixed server (determining a set of SQL server-wide privileges) and database (applying to database objects and activities) roles. We have also discussed application roles, which makes the level of permissions independent of those assigned to a SQL Server login or a database user account. Now it is time to look into permissions from the point of view of database objects. There are two main factors that play a role in determining how access rights to them are evaluated - their ownership and custom permissions. We will discuss the first one of these topics in this article and will continue with the other one in the next installment of this series
MSSQL Server 2000 Reporting Services: Managing Reporting Services: Data-driven Subscriptions, and External Data Sources for Subscriber Data
William Pearson
In our last article, Managing Reporting Services: Report Execution and Standard Subscriptions, we continued our introduction to the Managing phase of the Reporting Services development life cycle, and introduced the main topics of report execution and viewing, together with standard subscriptions. We reviewed the process of running reports, partially touched upon in our last session, and then we discussed directly viewing reports from a web browser
Monitoring Drive and Database Free Space
Mark Nash
It's 13:30 AM and you get a call from the Applications On-Call person. Application XYZ is down, looks like an SQL Server problem. You find that a drive or database is out of space, causing the SQL Server to crash. Now the difficult part, find some free space and hope the SQL Server will successfully recover!! We will not even consider the Application downtime, corrupt databases, etc…
SQL Server Express
Steve Jones
As most people know, Microsoft is moving forward with the next evolution of SQL Server, AKA Yukon, AKA SQL Server 2005. The product is being developed and coincides with the Visual Studio 2005. However the next Beta, Beta 2, which TechEd 2004 attendees were allowed to sign up for, will not be a large public release (according to ENT News. Instead it should be here any day for a larger audience than Beta 1, but still a limited group, only about 100,000 users. Beta 3 is expected to be available for the general public
Microsoft Offers 'Lite' Software
Steve Lohr
International Herald Tribune. New York Times. The Wednesday, June 30, 2004. Microsoft owes much of its success to its skillful care and feeding of software developers, making it comparatively easy and inexpensive to write programs that run on the company's franchise product, the Windows operating system
Securing Your Microsoft SQL Server Databases in an Enterprise Environment
BMC Software
If you are running Microsoft SQL Server databases to support critical enterprise applications, you are part of a growing trend. The low cost and performance benefits of using Microsoft SQL Server on the Microsoft Windows NT and Windows 2000 platforms have fueled the growth of SQL Server as a platform for enterprise-class applications

[В начало]

ФОРУМ SQL.RU

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

Недостатки MSSQL
непонятна причина дедлока
Не в меру умный ADODB.Recordset и как с ним бороться.
Блокировка при insert :((
Передача даты в параметрах. Что я делаю неправильно?
Failed to enumerate changes in the filtered articles
СНОВА: SQL Server 2000 растет в памяти вплоть до вылета.
Как просуммировать значиния
Остановка SQL Server
execution plan
Пожар! (перестал видеть в EM юзеров)
Обнуляется строковая переменнная
При перемножении двух полей выдается неправильный результат
MS SQL 2000 + Windows Server 2003
Мешает instead of delete, а без него - плохо
перевести строку в дату
Как задать права на все ХП
Помогите с Select'ом
identity, вопрос
Какой выбрать индекс - кластерный или не кластерный, подскажите.

[В начало]

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

транзакционная репликация и начальный снапшот
Как изменить XSD схему,чтоб работала с XML Bulk Load?
SP4 для SQL7.0 и Win2003Ent???
Первое заседание Russian SQL Server Club в Питере
Удаленное выполнение DTS-пакета на сервере
Unspecified error thrown by sqlserver
Не хватает REPODBC.DLL :(
Про тран репликацию
Безопасность в Reporting Services
Как в данной процедуре добавить в выборе P.id_Product
тип вывода параметров в Reporing Services

[В начало]

ПОЛЕЗНОСТИ

Базы данных: Введение в теорию и методологию.

Марков А.С., Лисовский К.Ю.

Издано: 2004, Финансы и статистика. ISBN: 5-279-02298-5. 511 стр. Цена: 338.00 руб.

Рассмотрены основные математические модели представления об отношении: теоретико-множественные, конструктивные, предикатные. Центральная тема - обоснование выбора методов вычислительной логики для повышения уровня интеллектуальности реляционных баз данных. Представлены и другие модели данных (сетевые и : иерархические), описывается объектно-ориентированный подход к проектированию баз данных. В качестве учебных языков программирования реляционных данных используются языки SQL и Дейталог. Особое внимание уделено методам обработки слабоструктурированных данных.
Для преподавателей и учащихся высших и средних учебных заведений, программистов и специалистов по применению баз данных, а также для всех, кто занимается самообразованием в этой области знаний.

[В начало]

#204<<  #205

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

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

СЕМИНАРЫ
КОНФЕРЕНЦИИ

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



ПУБЛИКАЦИИ
АРХИВ


http://subscribe.ru/
E-mail: ask@subscribe.ru
Адрес подписки
Отписаться

В избранное