#sql-server #permissions #tempdb
#sql-сервер #разрешения #база данных tempdb
Вопрос:
Представитель поставщика приложений попросил меня предоставить dbowner доступ к базе данных tempdb для входа в их приложение; чтобы иметь возможность создавать объекты в базе данных tempdb без префиксов «#» или «##». Я пытался убедить его забыть запрашивать прямой доступ к базе данных tempdb, утверждая, что предоставление прямого доступа может помешать внутренним операциям ядра SQL Server и помешать процессам очистки базы данных tempdb правильно выполнять свою работу. А также есть еще один недостаток при перезапуске службы SQL, который приводит к возврату любых настроек разрешений в базе данных tempdb к значениям по умолчанию.
Есть ли что-нибудь, что я мог бы пропустить в этом отношении?
Комментарии:
1. Вы не должны использовать базу данных tempdb для постоянного хранения, все в ней одноразово. Согласно документации базы данных Microsoft tempdb ,
tempdb
создается заново при каждом запуске SQL Server, так что система всегда запускается с чистой копией базы данных, а операции резервного копирования и восстановления запрещеныtempdb
. На мой взгляд, вам следует менять поставщиков приложений так быстро, как только сможете.2. Если приложению требуется своя собственная рабочая база данных и оно не желает использовать «временные» объекты, то оно должно нести ответственность за свою собственную частную базу данных. Например, SSRS необходимо создать большое количество временных / энергозависимых объектов, которые не являются частью приложения или требуют включения в решение для резервного копирования, поэтому у него есть собственная база данных ReportServerTemp , чтобы она могла надежно сохранять данные после перезагрузки.
3.
db_owner
это довольно плохая идея, самое большее, что вы могли бы им датьdb_ddladmin
. Но, как уже упоминалось, все равно все стирается, так что неясно, чего они пытаются добиться. Вы можете изменитьmodel
базу данных, которая используется для воссозданияtempdb
, но это, вероятно, еще худшая идея4. @Stu , спасибо , что привели хороший пример отказа от использования базы данных tempdb и наличия собственного временного хранилища