среда, 13 января 2010 г.

Set connection limit for MS SQL Server using TSQL

Сегодня предлагаю небольшой TSQL скрипт для установки максимального числа одновременных клиентский соединений для MS SQL Server.

SELECT * FROM sys.configurations
where description like '%connection%'
ORDER BY name
GO

sp_configure 'show advanced options', 1;
GO
RECONFIGURE WITH OVERRIDE
GO

exec sp_configure 'user connections', 0;
GO
RECONFIGURE WITH OVERRIDE
GO

SELECT @@MAX_CONNECTIONS
GO

sp_configure 'show advanced options', 0;
GO
RECONFIGURE WITH OVERRIDE
GO

После рестартовать SQL Server.

Используя SQL Server Management Studio:


  1. В обозревателе объектов щелкните правой кнопкой мыши на сервере и выберите Свойства.

  2. Выбрать закладку подключения.

  3. В соединениях, в поле Мах число одновременных подключений введите или выберите значение от 0 до 32767 для установки максимального количества пользователей, которым разрешено одновременное подключение к экземпляру SQL Server.

  4. Перезапустите SQL Server.

пятница, 8 января 2010 г.

MS Sql Server error with computed column

Здравствуйте, меня зовут Почепцов Вячеслав и сегодня я начну серию технических постов, связанных с различными аспектами разработки и способных помочь людям, которые столкнуться с подобными проблемами или размышлениями.
Сейчас я занимаюсь разработкой высоконагруженного сайта LiquidGeneration, написанного моей командой на ASP.NET MVC 1.0, IIS 7.0, Windows 2008, MS Sql Server 2005.
Сегодня рассмотрим простую ситуацию в MS Sql Server 2005, которая вызывает ошибку
Internal Query Processor Error: The query processor could not produce a query plan. For more information, contact Customer Support Services.
USE [master]
GO

-- SET ANSI_PADDING that preferred on Sql Server 2005+
SET ANSI_PADDING ON
GO

-- drop databse if it already exists
IF  EXISTS (SELECT name FROM sys.databases WHERE name = N'test')
DROP DATABASE [test]
GO

CREATE DATABASE [test];
GO

USE [test]
GO


CREATE TABLE [dbo].[CHILD](
[ID] [int] NOT NULL,
[SOME_FIELD] [nvarchar](40) NOT NULL
) ON [PRIMARY]
GO

-- create table with computed field. it's important!
CREATE TABLE [dbo].[PARENT](
[ID] [int] NOT NULL,
[NAME] [nvarchar](40) NOT NULL,
[COMPUTED_FIELD]  AS (replace([NAME],' ','_')) PERSISTED,
CONSTRAINT [PK_PARENT] PRIMARY KEY CLUSTERED ([ID] ASC))

--create foreign key constraint
ALTER TABLE [dbo].[CHILD]  ADD  CONSTRAINT [FK_PARENT_CHILD] FOREIGN KEY([ID])
REFERENCES [dbo].[PARENT] ([ID])
GO

-- insert some data into tables
-- to verify that insert operation works well
INSERT PARENT
SELECT 1, 'bill'
UNION ALL
SELECT 2, 'john'
UNION ALL
SELECT 3, 'jett'

INSERT CHILD
SELECT 1, 'test1'
UNION ALL
SELECT 2, 'test2'
UNION ALL
SELECT 3, 'test3'
GO

-- create stored procedure that perform the same insert that previous sql command
-- it use child table that has foreign key to parent table with computed field
CREATE PROCEDURE [dbo].[sp_InsertIntoChild]
AS
BEGIN
INSERT CHILD
SELECT 3, 'test4'
END
GO

-- set padding off - it's default settings for connections from DB-Library applications
SET ANSI_PADDING OFF
GO

-- run stored procedure
EXEC    [dbo].[sp_InsertIntoChild]

SELECT * FROM [CHILD]

Исправить проблему можно достаточно просто установив SET ANSI_PADDING ON, но при вызове из приложения при создании соединения установить это невозможно.

Ошибка обрабатывается специалистами Microsoft, обещали исправить.

Sql cкипрт