Учёт DEPO: скрипт снова выполняется; логин bj виден в обоих способах; новые логин и пароль — только после проверки входа
- EXEC(...) в T-SQL склеивает только строки и переменные: REPLACE/QUOTENAME внутри давали ошибку 102, и SQL Server отклонял весь скрипт (.06.4–.06.6). Команда входа собирается в @sql заранее; тест ловит вызовы функций внутри EXEC; живая проверка синтаксиса на SQL Server без выполнения (SET PARSEONLY) — TestDepoSetupScriptParseLive. - «Логин bj / Пароль bj» и в способе «Дать логин администратора»: на общем сервере bj_user может быть занят другим bj — подготовка сменила бы ему пароль. Предупреждение. - Показ скрипта на странице ничего не сохраняет. Логин и пароль из выданного скрипта и из «Проверить подключение» хранятся черновиком (DepoNewUser/DepoNewPass) и становятся рабочими только после успешного входа: службы bj с неверным паролем за минуты блокировали логин на сервере (CHECK_POLICY) — у всех, кто им пользуется. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
@@ -99,11 +99,14 @@ END
|
||||
PRINT N'База DEPO: ' + @db;
|
||||
DECLARE @in nvarchar(300) = N'USE ' + QUOTENAME(@db) + N'; ';
|
||||
|
||||
-- 1. Логин bj
|
||||
-- 1. Логин bj (если такой логин на сервере уже есть — ему ставится пароль из @pass)
|
||||
-- (EXEC(...) склеивает только строки и переменные — команда собирается в @sql заранее)
|
||||
DECLARE @sql nvarchar(max);
|
||||
IF SUSER_ID(N'%[1]s') IS NULL
|
||||
EXEC(N'CREATE LOGIN [%[1]s] WITH PASSWORD = N''' + REPLACE(@pass, N'''', N'''''') + N''', CHECK_POLICY = ON, DEFAULT_DATABASE = ' + QUOTENAME(@db))
|
||||
SET @sql = N'CREATE LOGIN [%[1]s] WITH PASSWORD = N''' + REPLACE(@pass, N'''', N'''''') + N''', CHECK_POLICY = ON, DEFAULT_DATABASE = ' + QUOTENAME(@db);
|
||||
ELSE
|
||||
EXEC(N'ALTER LOGIN [%[1]s] WITH PASSWORD = N''' + REPLACE(@pass, N'''', N'''''') + N'''');
|
||||
SET @sql = N'ALTER LOGIN [%[1]s] WITH PASSWORD = N''' + REPLACE(@pass, N'''', N'''''') + N'''';
|
||||
EXEC(@sql);
|
||||
|
||||
-- 2. Таблицы обмена FTV_M2M* (только недостающие таблицы, колонки и индексы — данные не меняются)
|
||||
`, login, job, sqlStr(db), sqlStr(pass))
|
||||
|
||||
Reference in New Issue
Block a user