Как поменять владельца базы sql 1с

Обновлено: 03.07.2024

У меня есть система MS SQL Server 2008 Express, которая содержит базу данных, которую я хотел бы "скопировать и переименовать" (для целей тестирования), но я не знаю простого способа достичь этого.

Я замечаю, что в версии R2 SQL Server есть мастер копирования базы данных, но, к сожалению, я не могу обновить.

база данных, о которой идет речь, находится вокруг концерта. Я попытался восстановить резервную копию базы данных, которую хочу скопировать в новую базу данных, но безуспешно.

установите Microsoft SQL Management Studio, вы можете скачать его бесплатно с веб-сайта Microsoft:

версия 2008

Microsoft SQL Management Studio 2008 является частью SQL Server 2008 Express с расширенными службами

версия 2012

клик скачать и проверьте ENU\x64\SQLManagementStudio_x64_ENU.exe

версия

клик скачать и проверьте MgmtStudio 64BIT\SQLManagementStudio_x64_ENU.exe

откройте Microsoft SQL Management Studio

щелкните правой кнопкой мыши базу данных для клонирования, нажмите кнопку Tasks , нажмите кнопку Copy Database. . Следуйте за мастером, и вы закончите.

вы можете попытаться отсоединить базу данных, скопировать файлы в новые имена в командной строке, а затем присоединить оба DBs.

в командной строке (я упростил пути к файлам для этого примера):

оказывается, я пытался восстановить из резервной копии неправильно.

Первоначально я создал новую базу данных, а затем попытался восстановить резервную копию здесь. То, что я должен был сделать, и что сработало в конце, - это открыть диалоговое окно восстановления и ввести имя новой базы данных в поле назначения.

короче говоря, восстановление из резервной копии сделало трюк.

Спасибо за все отзывы и предложения ребята

это скрипт, который я использую. Немного сложно, но это работает. Протестировано на SQL Server 2012.

используя MS SQL Server 2012, необходимо выполнить 3 основных шага:

во-первых, создать .sql файл, содержащий только структуру исходного DB

  • щелкните правой кнопкой мыши на БД, а потом задачи затем Сформировать Сценарии
  • следуйте за мастером и сохраните локально

во-вторых, замените исходную БД на целевую в

  • щелкните правой кнопкой мыши на файл назначения, выберите Новый Запрос и Ctrl-H или (редактировать - найти и заменить - быстрая замена)

наконец, заполнить данными

  • Правой Кнопкой Мыши на целевой БД, затем выберите задачи и Импорт Данных
  • источник данных выпадающее значение "поставщик данных .net framework для SQL server " + установите текстовое поле строки соединения под данными ex: Data Source=Mehdi\SQLEXPRESS;Initial Catalog=db_test;User >
  • сделать то же самое с пунктом
  • проверьте таблицу, которую вы хотите перенести, или установите флажок " источник: . - проверить их всех!--16-->

в SQL Server 2008 R2 резервное копирование базы данных в виде файла в папку. Затем выберите опцию восстановления, которая появляется в папке "база данных". В Мастере введите новое имя, которое требуется в целевой базе данных. И выберите восстановить файл frrom и использовать файл, который вы только что создали. Я jsut сделал это, и это было очень быстро (мой DB был маленьким, но все же) Пабло.

ни одно из решений, упомянутых здесь, не работало для меня - я использую SQL Server Management Studio 2014.

вместо этого мне пришлось снять флажок "take tail-log backup before restore" на экране "параметры": в моей версии он установлен по умолчанию и предотвращает завершение операции восстановления. После снятия флажка операция восстановления прошла без проблем.

enter image description here

если база данных не очень велика, вы можете посмотреть команды "база данных сценариев" в SQL Server Management Studio Express, которые находятся в контекстном меню самого элемента базы данных в проводнике.

вы можете выбрать, что все для сценария; вы хотите объекты и данные, конечно. Затем вы сохраните весь сценарий в один файл. Затем вы можете использовать этот файл для повторного создания базы данных; просто убедитесь, что вверху "правильные" база данных.

другой способ, который делает трюк с помощью мастер импорта/экспорта, выберите источник-это ваш сервер с исходной базой данных, а затем в пункте назначения выберите тот же сервер с целевой базой данных (сначала вам нужно создать пустую базу данных), затем нажмите finish

он создаст все таблицы и перенесет все данные в новую базу данных,

решение, основанное на этом комментарии:https://stackoverflow.com/a/22409447/2399045 . Просто установите настройки: имя БД, папка temp, папка db files. А после запуска у вас будет копия БД с именем в формате "sourcedbname_yyyyy-mm-dd".

скрипт, основанный на ответе Джо (отсоединить, скопировать файлы, прикрепить оба).

  1. запустите Managment Studio как учетную запись администратора.

это не обязательно, но, возможно, ошибка отказа в доступе при выполнении.

  1. настройка sql server для выполнения xp_cmdshel
  1. запустите скрипт, но введите свои имена БД в @dbName и @copyDBName переменные перед.

вы можете просто создать новую базу данных, а затем перейти к задачам, импортировать данные и импортировать все данные из базы данных, которую вы хотите дублировать в базу данных, которую вы только что создали.

В будущей версии Microsoft SQL Server этот компонент будет удален. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Вместо этого используйте инструкцию ALTER AUTHORIZATION .

Синтаксис

Аргументы

[ @loginame =] "Login"
Идентификатор имени входа нового владельца текущей базы данных. Аргумент Login имеет тип sysname и не имеет значения по умолчанию. имя для входа должно быть уже существующим SQL Server именем входа или пользователем Windows. имя входа не может стать владельцем текущей базы данных, если у нее уже есть доступ к базе данных через существующую учетную запись безопасности пользователя в базе данных. Чтобы избежать этой ситуации, сначала удалите данного пользователя в текущей базе данных.

[ @map =] remap_alias_flag
Параметр remap_alias_flag является устаревшим, так как псевдонимы для входа были удалены из SQL Server . Использование параметра remap_alias_flag не приводит к ошибке, но не оказывает никакого влияния.

Значения кода возврата

0 (успешное завершение) или 1 (неуспешное завершение)

Замечания

После выполнения процедуры sp_changedbowner новый владелец становится известным в базе данных как пользователь dbo. Пользователь dbo имеет неявные разрешения на выполнение любых действий в базе данных.

Владельца системных баз данных master, model или tempdb нельзя изменить.

Чтобы отобразить список допустимых значений для входа , выполните хранимую процедуру sp_helplogins.

При запуске sp_changedbowner только с параметром Login владелец базы данных изменяется на имя для входа.

Можно изменить владельца любого защищаемого объекта с помощью инструкции ALTER AUTHORIZATION. Дополнительные сведения см. в разделе ALTER AUTHORIZATION (Transact-SQL).

Разрешения

Необходимо разрешение TAKE OWNERSHIP для базы данных. Если новый владелец имеет соответствующего пользователя в базе данных, требуется разрешение IMPERSONATE для имени входа, в противном случае необходимо разрешение CONTROL SERVER для сервера.

Примеры

В следующем примере показано, как сделать имя входа Albert владельцем текущей базы данных.

Предоставление пользователю доступа к базе данных включает три шага. Вначале создается имя входа. Имя входа дает пользователю возможность подключиться к компоненту Компонент SQL Server Database Engine. Затем имя входа настраивается как пользователь в заданной базе данных. Наконец, предоставляются пользовательские разрешения на объекты базы данных. В этом занятии показаны все три шага, а также создание представления и хранимой процедуры в виде объекта.

В этом занятии используются объекты, созданные в разделе Урок 1. Создание объектов баз данных. Пройдите урок 1, прежде чем переходить к уроку 2.

Предварительные требования

Для работы с этим руководством необходима среда SQL Server Management Studio и доступ к экземпляру SQL Server.

Если у вас нет доступа к экземпляру SQL Server, выберите свою платформу в следующих ссылках. При выборе проверки подлинности SQL используйте учетные данные SQL Server.

  • Windows: скачать выпуск SQL Server 2017 Developer Edition.
  • macOS: скачать SQL Server 2017 для Docker.

Мы слушаем! Если вы обнаружили в этой статье устаревшие или недостоверные сведения, например инструкции или пример кода, сообщите нам. Можно воспользоваться кнопкой Эта страница в разделе Отзывы внизу страницы. Обычно мы читаем отзывы про материалы по SQL на следующий день. Благодарим вас.

Создает вход

Чтобы получить доступ к компоненту Компонент Database Engine, необходимо иметь имя входа. Имя входа может идентифицировать пользователя как учетную запись Windows или как члена группы Windows, или имя входа может быть именем входа SQL Server , которое существует только в SQL Server. При возможности используйте проверку подлинности Windows.

По умолчанию администраторы компьютера имеют полный доступ к SQL Server. Для этого занятия нужно иметь пользователя с меньшим правом доступа; следовательно, вы создадите новую локальную учетную запись проверки подлинности Windows на компьютере. Чтобы сделать это, нужно быть администратором на своем компьютере. После этого нужно предоставить новому пользователю доступ к SQL Server.

Создание учетной записи Windows

Создание имени для входа SQL

В окне редактора запросов среды SQL Server Management Studioвведите и выполните следующий исходный код, заменив computer_name на имя компьютера. FROM WINDOWS указывает, что Windows проверит подлинность пользователя. Необязательный аргумент DEFAULT_DATABASE соединяет Mary с базой данных TestData , если только в ее строке соединения не указана другая база данных. Эта инструкция рассматривает точку с запятой в виде необязательного завершения инструкции языка Transact-SQL .

Этим авторизируется имя пользователя Mary , проверенное компьютером, чтобы получить доступ к экземпляру SQL Server. Если на компьютере находится более одного экземпляра SQL Server , нужно создать имя входа для каждого экземпляра, к которому Mary должна иметь доступ.

Поскольку Mary не является доменной учетной записью, это имя пользователя может быть принято только на данном компьютере.

Предоставление доступа к базе данных

Теперь Mary имеет доступ к данному экземпляру SQL Server, но не имеет разрешения на доступ к базе данных. У нее даже нет доступа к своей базе данных по умолчанию TestData , пока вы не авторизируете ее в качестве пользователя базы данных.

Чтобы предоставить Mary доступ, переключитесь на базу данных TestData и при помощи инструкции CREATE USER сопоставьте ее имя входа с именем пользователя «Mary».

Создание пользователя в базе данных

Введите и выполните следующие инструкции (заменяя computer_name на имя компьютера), чтобы предоставить пользователю Mary доступ к базе данных TestData .

Теперь пользователь Mary имеет доступ к SQL Server и к базе данных TestData .

Создание представлений и хранимых процедур

Будучи администратором, можно выполнять инструкцию SELECT из таблицы Products и представления vw_Names, а также выполнять процедуру pr_Names; однако Мэри всего этого не может. Чтобы предоставить Mary необходимые разрешения, воспользуйтесь инструкцией GRANT.

Предоставление разрешений на хранимые процедуры

Выполните следующую инструкцию, чтобы предоставить Mary разрешение на EXECUTE для хранимой процедуры pr_Names .

В данном сценарии Mary имеет доступ только к таблице Products посредством хранимой процедуры. Если Mary нужно выполнять инструкцию SELECT к представлению, нужно выполнить инструкцию GRANT SELECT ON vw_Names TO Mary . Чтобы удалить доступ к объектам базы данных, воспользуйтесь инструкцией REVOKE.

Если таблицей, представлением или хранимой процедурой не владеет та же схема, процесс предоставления прав становится более сложным.

Об инструкции GRANT

Нужно иметь разрешение на EXECUTE, чтобы выполнить хранимую процедуру. Нужно иметь разрешения на SELECT, INSERT, UPDATE и DELETE, чтобы получить доступ к данным и изменять их. Инструкция GRANT также используется для других разрешений, например для разрешений на создание таблиц.

Дальнейшие действия

В следующей статье вы узнаете, как удалить объекты базы данных, созданные в других уроках.

При развертывании информационных баз предприятий на основе решений 1С в клиент-серверном режиме с использованием СУБД MS SQL иногда бывает нужно, чтобы разные базы создавались от имени разных пользователей. Т.е. нам бывает нужно завести в SQL Management Studio пользователя, отличного от sa и ввести его данные в поля окна добавления новой ИБ. (рис1.)


Каковы минимальные права, при которых это всё будет функционировать?

В материалах методической поддержки ИТС говорится, что «этот пользователь должен иметь не только полные права на базу данных информационной базы, но и права на создание баз данных в SQL-сервере и на чтение таблиц базы данных Master». Чтобы посмотреть, как это работает на практике, проведем тестовую установку ИБ в клиент-серверном варианте, используя MS SQL Server 2008 R2 Express. Можно, конечно же, тупо скопировать параметры пользователя sa, но давайте сделаем это осмысленно, это всегда полезно.

Запустим среду SQL Management Studio 2008 R2, установим соединение с SQL-сервером и откроем раздел Безопасность->Имена входа и выберем команду контекстного меню «Создать имя входа», зададим имя пользователя и установим права dbcreator, public (рис.2)


На странице свойств пользователя «Сопоставление пользователей» отметим флажком «Схема» все базы в таблице сопоставленных пользователей master, model, msdb, tempdb, и для каждой базы из таблицы отметим членство в ролях public, db_owner (рис.3)


Теперь можно вернуться к окну, изображенному на рис. 1 и применить введенные параметры. Нажимаем Далее->Готово и. база создана, список баз увеличился на одну позицию.

Таким образом, мы сможем обрадовать и успокоить системного администратора, ведь указанная комбинация прав пользователя MS SQL минимально достаточна для использования с платформой 1С в клиент-серверном режиме, и пароль «sa» останется не скомпрометированным, а у нас есть нужные нам права пользователя MS SQL.

Читайте также: