Проблемы
Рассмотрим следующий сценарий.
-
В базе данных модели создается пользовательский тип данных.
-
Пользователь, который не является системным администратором, пытается использовать этот тип данных для создания временной таблицы в базе данных модели.
В этом случае пользователь получит следующее сообщение об ошибке:
Msg 15247, Level 16, State 4, Server <Server name>, Line 1
У пользователя нет разрешения на выполнение этого действия.
Причина
В разделе Разрешения раздела Книги Online для create TABLE есть следующая заметка:
Если какие-либо столбцы в заявлении CREATE TABLE имеют определенный пользователем тип CLR, требуется либо владение типом, либо разрешение REFERENCES на него.
Эта заметка относится не только к типам данных CLR, но и к пользовательским типам данных. Обратитесь к разделу»Использованиепользовательских типов в разных базах данных» книги SQL Server Online, в которой рассматривается поведение типов данных CLR.
ПРИМЕЧАНИЕ. Эта проблема возникает только при явном создании таблиц, а не при неявном создании таблиц с помощью выражений SELECT INTO.
Решение
Предоставить разрешения для определенного пользователем типа данных соответствующим пользователям, как предложено в разделе Причина. Чтобы решить эту проблему, можно также использовать один из следующих способов:
Способ 1.Предоставление разрешений REFERENCES для общего пользователя в базе данных модели.
Пример:
CREATE TYPE dbo.udt_money FROM varchar(11) NOT NULL;
перейти
GRANT REFERENCES ON TYPE::d bo.udt_money TO public
ПРИМЕЧАНИЕ.Перед использованием этого метода тщательно оцените последствия для системы безопасности, так как это разрешение будет перенаться в каждую новую базу данных.
Способ 2.Если вы не хотите, чтобы каждая новая база данных сохраняла определение и разрешения для этого пользовательского типа данных, вы можете использовать хранимую процедуру запуска для создания и назначения соответствующих разрешений только в базе данных TEMPDB.
Пример:
ИСПОЛЬЗОВАТЬ мастер
Пойти
CREATE PROCEDURE setup_udt_in_tempdb
Как
EXEC ( ‘USE tempdb;
CREATE TYPE dbo.udt_money FROM varchar(11) NOT NULL;
GRANT REFERENCES ON TYPE::d bo.udt_money TO public;’)
Пойти
ExEC sp_procoption ‘setup_udt_in_tempdb’, ‘startup’ , ‘on’
Пойти
Способ 3.
Вместо использования временных таблиц можно использовать переменные таблиц, если вам нужно со ссылкой на пользовательские типы данных для временного хранения. Для ссылок на пользовательские типы данных с переменными таблицы не требуется явно предоставлять разрешения для пользовательского типа данных.
Нужна дополнительная помощь?
Нужны дополнительные параметры?
Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.
В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.
- Remove From My Forums
-
Question
-
Hi,
I was able to do my work with ease on my Database server, until sometime Friday evening. Don’t exactly know what transpired, only that I can now no longer run queries or even create new databases. Here is a sample of what happens when I try to create a database
Create Database PetitionSample
Msg 262, Level 14, State 1, Line 1
CREATE DATABASE permission denied in database ‘master’.
I used to be able to create databases, create new users and so on. My Server is installed on a Vista machine and I am running Developer version and using Management studio 2008 to access it. Anyone have any idea what could be going on?
None
Answers
-
-
Proposed as answer by
Friday, January 16, 2009 6:42 AM
-
Marked as answer by
Mangal Pardeshi
Monday, January 26, 2009 4:30 AM
-
Proposed as answer by
- Remove From My Forums
-
Question
-
Hi,
I have security admin role, but still I can not able to create login.
Error: user does not have permission (error 15247)
What is the issue here
Thanks
Shashikala
Shashikala
Answers
-
Hi,
I have security admin permission
Shashikala
Hi Shashikala K Bhat,
According to your description, I do a test in SQL Server 2012. If the SQL Server login account has security admin permission, when you log in the SQL Server via this account, you can create a new login in the SQL Server. About the error message 15247, I
recommend you use windows authentication mode and go to security then try create new login. If the error still exists, you can try reinstall your SQL Server.
There is similar issue about error 15247, you can review the following article.
http://stackoverflow.com/questions/9185142/sql-server-2008-r2-express-permissions-cannot-create-database-or-modify-usersRegards,
Sofiya Li
Sofiya Li
TechNet Community Support-
Proposed as answer by
Monday, March 31, 2014 3:51 PM
-
Marked as answer by
Sofiya Li
Friday, April 4, 2014 1:37 AM
-
Proposed as answer by
- Remove From My Forums
-
Question
-
Hi,
I was able to do my work with ease on my Database server, until sometime Friday evening. Don’t exactly know what transpired, only that I can now no longer run queries or even create new databases. Here is a sample of what happens when I try to create a database
Create Database PetitionSample
Msg 262, Level 14, State 1, Line 1
CREATE DATABASE permission denied in database ‘master’.
I used to be able to create databases, create new users and so on. My Server is installed on a Vista machine and I am running Developer version and using Management studio 2008 to access it. Anyone have any idea what could be going on?
None
Answers
-
-
Proposed as answer by
Friday, January 16, 2009 6:42 AM
-
Marked as answer by
Mangal Pardeshi
Monday, January 26, 2009 4:30 AM
-
Proposed as answer by
- Remove From My Forums
-
Question
-
Hi,
I was able to do my work with ease on my Database server, until sometime Friday evening. Don’t exactly know what transpired, only that I can now no longer run queries or even create new databases. Here is a sample of what happens when I try to create a database
Create Database PetitionSample
Msg 262, Level 14, State 1, Line 1
CREATE DATABASE permission denied in database ‘master’.
I used to be able to create databases, create new users and so on. My Server is installed on a Vista machine and I am running Developer version and using Management studio 2008 to access it. Anyone have any idea what could be going on?
None
Answers
-
- Proposed as answer by
Friday, January 16, 2009 6:42 AM
- Marked as answer by
Mangal Pardeshi
Monday, January 26, 2009 4:30 AM
- Proposed as answer by
- Remove From My Forums
-
Question
-
Hi,
I was able to do my work with ease on my Database server, until sometime Friday evening. Don’t exactly know what transpired, only that I can now no longer run queries or even create new databases. Here is a sample of what happens when I try to create a database
Create Database PetitionSample
Msg 262, Level 14, State 1, Line 1
CREATE DATABASE permission denied in database ‘master’.
I used to be able to create databases, create new users and so on. My Server is installed on a Vista machine and I am running Developer version and using Management studio 2008 to access it. Anyone have any idea what could be going on?
None
Answers
-
- Proposed as answer by
Friday, January 16, 2009 6:42 AM
- Marked as answer by
Mangal Pardeshi
Monday, January 26, 2009 4:30 AM
- Proposed as answer by
Проблемы
Рассмотрим следующий сценарий.
-
В базе данных модели создается пользовательский тип данных.
-
Пользователь, который не является системным администратором, пытается использовать этот тип данных для создания временной таблицы в базе данных модели.
В этом случае пользователь получит следующее сообщение об ошибке:
Msg 15247, Level 16, State 4, Server <Server name>, Line 1
У пользователя нет разрешения на выполнение этого действия.
Причина
В разделе Разрешения раздела Книги Online для create TABLE есть следующая заметка:
Если какие-либо столбцы в заявлении CREATE TABLE имеют определенный пользователем тип CLR, требуется либо владение типом, либо разрешение REFERENCES на него.
Эта заметка относится не только к типам данных CLR, но и к пользовательским типам данных. Обратитесь к разделу»Использованиепользовательских типов в разных базах данных» книги SQL Server Online, в которой рассматривается поведение типов данных CLR.
ПРИМЕЧАНИЕ. Эта проблема возникает только при явном создании таблиц, а не при неявном создании таблиц с помощью выражений SELECT INTO.
Решение
Предоставить разрешения для определенного пользователем типа данных соответствующим пользователям, как предложено в разделе Причина. Чтобы решить эту проблему, можно также использовать один из следующих способов:
Способ 1.Предоставление разрешений REFERENCES для общего пользователя в базе данных модели.
Пример:
CREATE TYPE dbo.udt_money FROM varchar(11) NOT NULL;
перейти
GRANT REFERENCES ON TYPE::d bo.udt_money TO public
ПРИМЕЧАНИЕ.Перед использованием этого метода тщательно оцените последствия для системы безопасности, так как это разрешение будет перенаться в каждую новую базу данных.
Способ 2.Если вы не хотите, чтобы каждая новая база данных сохраняла определение и разрешения для этого пользовательского типа данных, вы можете использовать хранимую процедуру запуска для создания и назначения соответствующих разрешений только в базе данных TEMPDB.
Пример:
ИСПОЛЬЗОВАТЬ мастер
Пойти
CREATE PROCEDURE setup_udt_in_tempdb
Как
EXEC ( ‘USE tempdb;
CREATE TYPE dbo.udt_money FROM varchar(11) NOT NULL;
GRANT REFERENCES ON TYPE::d bo.udt_money TO public;’)
Пойти
ExEC sp_procoption ‘setup_udt_in_tempdb’, ‘startup’ , ‘on’
Пойти
Способ 3.
Вместо использования временных таблиц можно использовать переменные таблиц, если вам нужно со ссылкой на пользовательские типы данных для временного хранения. Для ссылок на пользовательские типы данных с переменными таблицы не требуется явно предоставлять разрешения для пользовательского типа данных.
Нужна дополнительная помощь?
- Remove From My Forums
-
Question
-
Hi,
I have security admin role, but still I can not able to create login.
Error: user does not have permission (error 15247)
What is the issue here
Thanks
Shashikala
Shashikala
Answers
-
Hi,
I have security admin permission
Shashikala
Hi Shashikala K Bhat,
According to your description, I do a test in SQL Server 2012. If the SQL Server login account has security admin permission, when you log in the SQL Server via this account, you can create a new login in the SQL Server. About the error message 15247, I
recommend you use windows authentication mode and go to security then try create new login. If the error still exists, you can try reinstall your SQL Server.
There is similar issue about error 15247, you can review the following article.
http://stackoverflow.com/questions/9185142/sql-server-2008-r2-express-permissions-cannot-create-database-or-modify-usersRegards,
Sofiya Li
Sofiya Li
TechNet Community Support- Proposed as answer by
Monday, March 31, 2014 3:51 PM
- Marked as answer by
Sofiya Li
Friday, April 4, 2014 1:37 AM
- Proposed as answer by
- Remove From My Forums
-
Вопрос
-
Hi,
I was able to do my work with ease on my Database server, until sometime Friday evening. Don’t exactly know what transpired, only that I can now no longer run queries or even create new databases. Here is a sample of what happens when I try to create a database
Create Database PetitionSample
Msg 262, Level 14, State 1, Line 1
CREATE DATABASE permission denied in database ‘master’.
I used to be able to create databases, create new users and so on. My Server is installed on a Vista machine and I am running Developer version and using Management studio 2008 to access it. Anyone have any idea what could be going on?
None
Ответы
-
- Предложено в качестве ответа
16 января 2009 г. 6:42
- Помечено в качестве ответа
Mangal Pardeshi
26 января 2009 г. 4:30
- Предложено в качестве ответа
2010-05-16, 17:17 / Argon
При наличии у пользователя прав локального администратора в операционной системе, в которой установлен Microsoft SQL Server (я предполагаю версию 2008), может случиться ситуация, что прав на подключение или управление сервером SQL у такого пользователя нет. Случиться такое может по разным причинам, от саботажа до банальной установки SQL Server’а доменным пользователем, которого уже удалили. Однако, есть возможность без переустановки SQL Server’а получить административные права любому пользователю, обладающим локальными административными правами на уровне ОС. Для этого нужно проделать следующие действия…
- зайти в систему от имени пользователя с правами локального администратора
- запустить командную строку с правами администратора (начиная с Windows Server 2008 по умолчанию включен UAC, поэтому для полных прав в системе все программы нужно запускать правым кликом → запуск от админа)
- выполнить остановку службы SQL Server
net stop MSSQLSERVER
- выполнить запуск службы SQL Server в однопользовательском режиме
net start MSSQLSERVER /m
- подключиться к командному процессору управления SQL Server с правами текущего пользователя
sqlcmd -E
- добавить объект безопасности Windows (локального или доменного пользователя или группу) в базу данных пользователей SQL Server
CREATE LOGIN [builtinадминистраторы] FROM WINDOWS;
GO; - назначить этому пользователю права администратора SQL Server’a
EXEC sp_addsrvrolemember 'builtinадминистраторы', 'sysadmin';
GO; - выйти из sqlcmd
exit
- запустить службу SQL Server в обычном режиме
net start MSSQLSERVER
- теперь можно подключаться с помощью Management Studio к вашему SQL серверу и выполнять необходимые действия
Рубрика | Tips and Tricks |
---|---|
Метки | security, безопасность, sql server, windows server, восстановление, recovery |
Опубликовано | 2010-05-16, 17:17; обновлено 2011-01-09, 17:01 |
Комментарии | 17 комментариев » | Лента комментариев RSS |
Ссылки |
Постоянная ссылка | Обратная ссылка |
Recently just upgraded to SQL Server 2008 R2 Express. When I attempt to create a database after logging in using Windows Authentication with my id myuser I receive this error:
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)
CREATE DATABASE permission denied in database ‘master’. RESTORE HEADERONLY is terminating abnormally Error 262
If I try to add the sysadmin role to myuser, this is the error I receive:
Add member failed for ServerRole ‘sysadmin’. (Microsoft.SqlServer.Smo)
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)
User does not have permission to perform this action Error 15247
If I try to add this role to my user with T-SQL, using this command,
EXEC sp_addsrvrolemember 'ziffenergymyuser', 'sysadmin';
GO
Here is the error I receive:
Msg 15247, Level 16, State 1, Procedure sp_addsrvrolemember, Line 29
User does not have permission to perform this action.
Does anyone have any suggestions? It seems that I can’t do anything with database on the local machine. Please note that I am the administrator on the Windows 7 workstation I am using, and if I try to create or modify databases and/or users on our network IT Test database server using SQL Server Management Studio, I can do that with no problem.
Недавно только что обновился до SQL Server 2008 R2 Express. Когда я пытаюсь создать базу данных после входа в систему с использованием проверки подлинности Windows с моим идентификатором myuser, я получаю эту ошибку:
Исключение при выполнении инструкции или пакета Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)
В базе данных master отказано в разрешении CREATE DATABASE. RESTORE HEADERONLY аварийно завершает работу Ошибка 262
Если я попытаюсь добавить роль sysadmin в myuser, я получаю следующее сообщение об ошибке:
Не удалось добавить участника для ServerRole «sysadmin». (Microsoft.SqlServer.Smo)
Исключение при выполнении инструкции или пакета Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)
У пользователя нет разрешения на выполнение этого действия Ошибка 15247
Если я попытаюсь добавить эту роль своему пользователю с помощью T-SQL, используя эту команду,
EXEC sp_addsrvrolemember 'ziffenergymyuser', 'sysadmin';
GO
Вот ошибка, которую я получаю:
Сообщение 15247, уровень 16, состояние 1, процедура sp_addsrvrolemember, строка 29
У пользователя нет разрешения на выполнение этого действия.
У кого-нибудь есть предложения? Похоже, я ничего не могу сделать с базой данных на локальном компьютере. Обратите внимание, что я являюсь администратором на рабочей станции Windows 7, которую я использую, и если я попытаюсь создать или изменить базы данных и / или пользователей на нашем сетевом сервере базы данных IT Test с помощью SQL Server Management Studio, я смогу сделать это без проблем.
- Remove From My Forums
-
Question
-
Hi,
I was able to do my work with ease on my Database server, until sometime Friday evening. Don’t exactly know what transpired, only that I can now no longer run queries or even create new databases. Here is a sample of what happens when I try to create a database
Create Database PetitionSample
Msg 262, Level 14, State 1, Line 1
CREATE DATABASE permission denied in database ‘master’.
I used to be able to create databases, create new users and so on. My Server is installed on a Vista machine and I am running Developer version and using Management studio 2008 to access it. Anyone have any idea what could be going on?
None
Answers
-
- Proposed as answer by
Friday, January 16, 2009 6:42 AM
- Marked as answer by
Mangal Pardeshi
Monday, January 26, 2009 4:30 AM
- Proposed as answer by
- Remove From My Forums
-
Question
-
Hi,
I was able to do my work with ease on my Database server, until sometime Friday evening. Don’t exactly know what transpired, only that I can now no longer run queries or even create new databases. Here is a sample of what happens when I try to create a database
Create Database PetitionSample
Msg 262, Level 14, State 1, Line 1
CREATE DATABASE permission denied in database ‘master’.
I used to be able to create databases, create new users and so on. My Server is installed on a Vista machine and I am running Developer version and using Management studio 2008 to access it. Anyone have any idea what could be going on?
None
Answers
-
- Proposed as answer by
Friday, January 16, 2009 6:42 AM
- Marked as answer by
Mangal Pardeshi
Monday, January 26, 2009 4:30 AM
- Proposed as answer by