Подготовка к переходу на одну базу данных - PullRequest
1 голос
/ 11 марта 2009

У нас есть приложение, которое имеет более 1000 баз данных и более 600 sprocs. Каждая база данных представляет своего клиента.

Проблема: нам нужно переместить это в одну базу данных, создав при этом как можно меньший эффект для пользовательского интерфейса, то есть не изменять все сигнатуры sproc за один раз.

Строка подключения в настоящее время устанавливает атрибут базы данных, предлагается переместить его в атрибут пользователя. Этот атрибут (с использованием SYSTEM_USER) может использоваться для определения идентификатора сайта, который будет использоваться в предложении where.

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

Есть ли какие-либо ограничения на количество входов в систему / пользователей, которые мы можем иметь на sqlserver 2005/8. Или кто-то был на этом пути, который мог бы пролить свет на лучший вариант.

Ответы [ 3 ]

1 голос
/ 11 марта 2009

Смотрите мой ответ здесь Идеи объединения тысяч баз данных в одну базу данных

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

0 голосов
/ 11 марта 2009

Вы можете также рассмотреть возможность задания отличительного имени приложения в строке подключения, а не использовать отличительного пользователя, который можно получить в предложении where с помощью APP_NAME (). Я уверен, что у SQL Server не будет проблем с тысячами имен входа, но вы можете предпочесть не создавать их.

0 голосов
/ 11 марта 2009

Что касается количества входов в систему в SQL Server 2005/08 - я не думаю, что кто-либо когда-либо сталкивался здесь с жестким ограничением. Несколько тысяч НЕ будут проблемой вообще.

То, что вы могли бы рассмотреть для этого сценария, может быть одной схемой в вашей отдельной БД на клиента, например. У клиента "Miller" есть схема "miller" с объектами внутри, а у клиента "Brown" будет схема "коричневый".

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

Марк

...