sp_changedbowner (Transact-SQL)
В будущей версии Microsoft SQL Server этот компонент будет удален. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Вместо этого используйте ALTER AUTHORIZATION .
Синтаксис
sp_changedbowner [ @loginame = ] 'login' [ , [ @map = ] remap_alias_flag ]
Аргументы
[ @loginame= ] ‘login‘
Идентификатор имени входа нового владельца текущей базы данных. имя входа — sysname, без значения по умолчанию. Имя входа должно быть уже существующим SQL Server именем входа или пользователем Windows. Имя входа не может стать владельцем текущей базы данных, если у него уже есть доступ к базе данных через существующую учетную запись безопасности пользователя в базе данных. Чтобы избежать этой ситуации, сначала удалите данного пользователя в текущей базе данных.
[ @map= ] remap_alias_flag
Параметр remap_alias_flag не рекомендуется использовать, так как псевдонимы входа были удалены из SQL Server. Использование параметра remap_alias_flag не приводит к ошибке, но не влияет.
Значения кода возврата
0 (успешное завершение) или 1 (неуспешное завершение)
Remarks
После выполнения процедуры sp_changedbowner новый владелец становится известным в базе данных как пользователь dbo. Пользователь dbo имеет неявные разрешения на выполнение любых действий в базе данных.
Владельца системных баз данных master, model или tempdb нельзя изменить.
Чтобы отобразить список допустимых значений входа , выполните sp_helplogins хранимую процедуру.
При выполнении sp_changedbowner только с параметром login изменяется владение базой данных на имя входа.
Можно изменить владельца любого защищаемого объекта с помощью инструкции ALTER AUTHORIZATION. Дополнительные сведения см. в статье ALTER AUTHORIZATION (Transact-SQL).
Разрешения
Необходимо разрешение TAKE OWNERSHIP для базы данных. Если новый владелец имеет соответствующего пользователя в базе данных, требуется разрешение IMPERSONATE для имени входа, в противном случае необходимо разрешение CONTROL SERVER для сервера.
Примеры
В следующем примере показано, как сделать имя входа Albert владельцем текущей базы данных.
EXEC sp_changedbowner 'Albert';
Изменить владельца БД в MS SQL Server
Вы можете изменить владельца базы данных MSSQL Server через SQL Server Management Studio. Подключитесь к вашем инстансу, создайте новый запрос и выполните такой запрос Transact-SQL:
ALTER AUTHORIZATION ON DATABASE::[yourdbname] TO [DOMAIN\user]
GO
Это рекомендованный способ.
Или можно использовать встроенную процедуру changedbowner
USE [yourdbname]
GO
EXEC sp_changedbowner ‘VMBLOG\Max’
GO
This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Use ALTER AUTHORIZATION instead.
Чтобы получить текущего владельца базы данных Microsoft SQL Server, выполните:
USE [master]
GO
SELECT db.name as [Database Name],sp.name [SQL Login Name] from sys.databases db left join sys.server_principals sp on db.owner_sid=sp.sid
where db.name=’yourdbname’
Или можно вывести все базы данных и их владельцев:
SELECT [name], SUSER_SNAME(owner_sid)
FROM sys.databases
Также вы можете изменить владельца из графического интерфейса SSMS:
- Откройте свойства базы данных;
- Перейдите в раздел Files;
- Текущий владелец указан в поле Owner, чтобы изменить его нажмите кнопку с тремя точками и выберите новый аккаунт из раздела Logins.
Чтобы изменить владельца базы данных Microsoft SQL Server, выполните такой запрос Transact-SQL:
ALTER AUTHORIZATION ON DATABASE::[yourdbname] TO [DOMAIN\user]
Изменение владельца БД
Доброго времени суток. Досталась мне «в наследство» 1С «Документооборот», крутящаяся на SQL и настроенная очень коряво, даже на мой непроффесиональный взгляд. Сама база данных имеет владельца не «sa» а имя входа предыдущего админа. В результате при выполнении этапов плана обслуживания, а именно «Сжатие баз данных» и «Реорганизация индекса» вылетают ошибки (скрин прилагаю), т.е. sa не может присоединиться к БД. Собственно вопрос — к каким последствиям приведет изменение владельца БД в дальнейшей работе (я не профессионал в этом), ибо есть риск остановить работу целого департамента краевой администрации. Заранее благодарю за помощь.
Лучшие ответы ( 2 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Смена владельца таблиц
Не подскажите как сменить владельца пользовательской таблицы, сделать владельцем не dbo, а другого.
Изменения данных владельца базы после восстановления
После восстановления базы созданной на другом сервере столкнулась с такой проблемой: не могу.
Изменение поля Владельца справочника
Имеется два справочника: "спр1" с дополнительным реквизитом "Доп"; "спр2" подчинен "спр1". .
Изменение владельца и прав доступа к директории командами chown и chmod
Помогите понять и разобраться! Предположим вы использовали команду sudo для создания директории.
3363 / 2059 / 736
Регистрация: 02.06.2013
Сообщений: 5,044

Сообщение было отмечено TrollHammer как решение
Решение
Владельца сменить нужно. Только это не поможет.
Лечить нужно сам план обслуживания, путем задания актуального пароля для sa.
Microsoft SQL Server: работа с базами данных
Наши пользователи могут использовать базы данных Microsoft SQL Server 2016 на своих виртуальных площадках в рамках, предусмотренных соответствующими тарифами.
Параметры и способы соединения с Microsoft SQL Server
- Имя хоста (сервера), на котором размещена база данных Microsoft SQL Server: uXXXXX.mssql.masterhost.ru;
- Порт: 1433;
- Логин: соответствует названию виртуальной площадки — uXXXXX;
- Пароль: указан в письме, которое пользователь получает при регистрации;
- Имя базы данных: соответствует названию виртуальной площадки — uXXXXX;
- Подключение нужно осуществлять по протоколу TCP/IP.
Подключение к SQL-серверу через «Microsoft SQL Server Management Studio Express»
Чтобы получить доступ к базе данных Microsoft SQL Server, возможно использовать Microsoft SQL Server Management Studio Express .

В параметрах выберите в качестве сетевого протокола TCP/IP.

Создание новой базы данных
Новую базу данных вы можете создать через раздел Услуги, в Личном кабинете. Выберите нужную «виртуальную площадку», далее в разделе «MS SQL» нажать на кнопку «+ База MS SQL». Затем вам необходимо указать имя (логин) и выбрать владельца новой базы.
Использовать Microsoft SQL Server Management Studio для создания новых баз данных нельзя.
Создание нового логина
Создать новый логин для базы данных Microsoft SQL вы можете через раздел Услуги, в Личном кабинете. Выберите нужную «виртуальную площадку», далее в разделе «MS SQL» нажать на кнопку «+ Пользователь MS SQL». Затем вам необходимо указать имя (логин) для нового пользователя.
Уменьшение физического размера файлов баз данных и лога транзакций MS SQL Server.
- Из графического интерфейса Microsoft SQL Server Management Studio:
- В обозревателе объектов подключитесь к экземпляру Microsoft SQL Server, 2016 Web Edition и разверните его.
- Разверните узел «Базы данных», затем правой кнопкой мыши щелкните базу данных, которую нужно сжать.
- В меню «Задачи» выберите «Сжать» и щелкните «База данных». Или установите флажок «Реорганизовать файлы перед освобождением неиспользуемого места». Если он установлен, необходимо указать значение параметра «Максимально доступное свободное место в файлах после сжатия».
DBCC SHRINKFILE (N'uXXXXXX.Log' , 0, TRUNCATEONLY) DBCC SHRINKDATABASE (N'uXXXXXX')Изменение кодировки сравнения (collation)
По умолчанию кодировка collation выставлена как Cyrillic_General_CI_AS, изменить кодировку для сравнений можно следующим SQL-запросом:
ALTER DATABASE [uXXXXX] COLLATE SQL_Latin1_General_CP1251_CS_AS GOгде uXXXXX — имя БД, где требуется данная операция.
Список доступных кодировок можно узнать так:
SELECT * FROM ::fn_helpcollations()Как дать права на доступ к базе определенному логину
Для SQL — дополнительный SQL логин, но настраивать права нужно самому: Заводим еще один SQL логин — uXXX_Ann
Для начала используем нашу базу:
USE [uXXXX] GOСоздаем пользователя для определенного «логина»:
CREATE USER [InetUser] FOR LOGIN [uXXX_Ann] GOНаделяем его правами (например только чтение таблиц):
EXEC sp_addrolemember N'db_datareader', N'InetUser' GOИли можем дать пользователю только конкретные права, на конкретные таблицы. Например, давайте дадим пользователю InetUser права на SELECT, INSERT, UPDATE для таблицы test, следующим SQL-запросом :
USE [uXXXXXX] GO GRANT SELECT ON [dbo].[test] TO [InetUser] GO GRANT INSERT ON [dbo].[test] TO [InetUser] GO GRANT UPDATE ON [dbo].[test] TO [InetUser] GOПри всем при этом, при осуществлении доступа через SQL Management Studio, под дополнительным логином не являющимся владельцем базы, не будет видно базу данных в списке доступных баз, но будет возможность выполнять разрешенные SQL-запросы .
Как получить раскладку по размеру таблиц в базе
Это можно сделать следующим SQL-запросом:
SET NOCOUNT ON DBCC UPDATEUSAGE(0) -- DB size. EXEC sp_spaceused -- Table row counts and sizes. CREATE TABLE #t ( [name] NVARCHAR(128), [rows] CHAR(11), reserved VARCHAR(18), data VARCHAR(18), index_size VARCHAR(18), unused VARCHAR(18) ) INSERT #t EXEC sp_msForEachTable 'EXEC sp_spaceused ''?''' SELECT * FROM #t -- # of rows. SELECT SUM(CAST([rows] AS int)) AS [rows] FROM #t DROP TABLE #t
