Показаны сообщения с ярлыком sqlserver. Показать все сообщения
Показаны сообщения с ярлыком sqlserver. Показать все сообщения

воскресенье, 26 августа 2007 г.

Древовидная БД - Как перестроить уровни ветвей

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

CREATE TABLE [dbo].[Categories](
[CategoryId] [int] IDENTITY(1,1) NOT NULL,
[CategoryName] [nvarchar](250) NOT NULL,
[ParentId] [int] NULL,
[Level] [int] NOT NULL,
CONSTRAINT [PK_Categories] PRIMARY KEY CLUSTERED
(CategoryId] ASC)
)


В таблице хранятся категории со ссылкой на родителя и их уровень. Уровень корня будет равен 1. Мы вводим уровень, для того, чтобы затем удобно строить дерево категорий в HTML.

Очевидно, нам потребуется какой-то путь автоматического расчета уровней для дерева категорий.

Например, это можно сделать такой вот процедурой:

CREATE PROCEDURE CatRebuildLevels
AS
BEGIN
DECLARE @CLevel int;
set @CLevel=1;
UPDATE Categories SET [Level]=0 WHERE NOT ParentId IS NULL;

UPDATE Categories SET [Level]=1 WHERE ParentId IS NULL;
WHILE (SELECT COUNT(*)
FROM Categories C
INNER JOIN Categories PC
ON PC.CategoryId=C.ParentId
WHERE PC.[Level] = @CLevel) > 0
BEGIN
UPDATE Categories
SET Categories.[Level]=@CLevel+1
WHERE CategoryId IN
(SELECT C.CategoryId
FROM Categories C
INNER JOIN Categories PC
ON C.ParentId = PC.CategoryId
WHERE
PC.[Level] = @CLevel)
set @CLevel = @CLevel+1
END
END


Общая идея - проставлять рекуррентно уровень, начиная с единицы. Каждый следующий уровень будет на 1 больше, чем предыдущий. Совсем несложно адаптировать эту процдуру для триггеров.

понедельник, 9 июля 2007 г.

Как подключиться к MS SQL Server Embedded Edition

Век живи, век учись...

Оказывается, во всем утилитах для MS SQLServer 2005 при подключении к серверу БД можно вместо Server Name вводить имя named pipe. Например, это помогает подключиться к SQL Server Embedded Edition, в котором по умолчанию для standalone установки хранят свои базы SharePoint Services.

Для этого всего лишь надо в поле server name ввести "\\.\pipe\mssql$microsoft##ssee\sql\query"

В противном случае - пришлось бы ставить SQL Server Management Studio Express

Найдено тут: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=949426&SiteID=1