Я унаследовал проект, в котором каждый «клиент» имеет свою собственную базу данных. Существуют сотни баз данных. Хранимые процедуры в настоящее время не используются.Использование одного набора хранимых процедур для сотен одинаковых баз данных
Каковы наилучшие методы использования данных здесь? Сохранять ли мои хранимые процедуры в «основной» базе данных и использовать динамический SQL для сбора данных? Похоже, что должен быть намного лучший способ. Я не хочу, чтобы работа выполнялась, чтобы нажимать хранимые процедуры вокруг сотен БД, чтобы синхронизировать все хранимые процедуры.
Этот динамический SQL работает, но я хочу лучше.
CREATE PROCEDURE [Users_SELECT]
@DataBase nvarchar(20),
@UserID uniqueidentifier
AS
BEGIN
DECLARE @sql nvarchar(max)
SET @sql = ''
SET @sql += 'SELECT * FROM ' + @DataBase + '.dbo.Users u '
SET @sql += 'WHERE [email protected] '
EXEC sp_executesql @sql, N'@UserID uniqueidentifier', @UserID
END
EXEC sp_executesql 'USE ' + @DataBase + '; GO'
Я попытался затем запустить ОТБОРНОЕ, но я не мог получить эту работу.
Я не владею базами данных и не обладаю способностью создавать новые. Это обрабатывается автономным приложением - я дополняю это мобильным сайтом. Я хочу воздержаться от внесения индивидуальных изменений в базу данных. На данный момент я пишу быстрый и грязный уровень данных и стараюсь быть осторожным, чтобы предотвратить атаки SQL-инъекций. –