Назад | Перейти на главную страницу

Преобразование операторов MySQL SQL в SQL Server

Я устанавливаю продукт, которому нужна база данных - он может использовать любую базу данных, если для него доступен коннектор jdbc. Однако в руководстве по установке есть инструкции только о том, как заставить его работать с MySQL.

Я запускаю его с SQL Server Express.

Это инструкции для MySQL

CREATE DATABASE proddb;
CREATE USER 'proddbusr'@'%' IDENTIFIED BY 'thepassword';
CREATE USER 'proddbusr'@'localhost' IDENTIFIED BY 'thepassword';
USE proddb;
GRANT ALL PRIVILEGES ON *.* TO 'proddbusr'@'localhost'  IDENTIFIED BY 'thepassword';
GRANT ALL PRIVILEGES ON *.* TO 'proddbusr'@'%' IDENTIFIED BY 'thepassword';
FLUSH PRIVILEGES;

Оператор CREATE DATABASE отлично работает на SQL Server.

Однако следующее заявление задыхается. Похоже, что имя db не должно быть в кавычках в SQL Server. Однако я не уверен, что эквивалентно «%» в SQL Server. Аналогично для 'proddb'@'localhost'.

SQL Server тоже подавляется *.* в заявлении GRANT.

Может ли кто-нибудь, кто знаком с SQL Server, помочь мне преобразовать все эти операторы в эквивалентные операторы для SQL Server?

ОБНОВИТЬ:

Пройдены по ссылкам, предоставленным bartlaarhoven.

CREATE DATABASE proddb;
CREATE LOGIN proddbusr with PASSWORD = 'thepassword';
CREATE USER proddbusr for LOGIN proddb;

До этого работает.

Однако неясно, как имя пользователя @ '%' и имя пользователя @ 'localhost переводятся в SQL Server.

Также после этого.

USE proddb;

Это работает.

В следующем утверждении есть проблемы.

GRANT ALL PRIVILEGES ON *.* to proddb;

SQL Server не распознает ..

Я изменил это на

GRANT ALL PRIVILEGES to proddb;

Это дает мне ошибку The ALL permission is deprecated and maintained only for compatibility. It DOES NOT imply ALL permissions defined on the entity..

Во всяком случае, в SQL Server Management Express я сделал следующее. Щелкните правой кнопкой мыши пользователя proddb внутри базы данных proddb -> Свойства. Предоставьте все возможные разрешения в окнах «Собственные схемы» и «Членство в ролях базы данных», за исключением двух разрешений на отказ в каждом из них. Это что-то похожее на «Предоставить все привилегии»?

SQL Server работает с этим иначе. Вы создаете АВТОРИЗОВАТЬСЯ с паролем для пользователя, который не зависит от его имени хоста или чего-то подобного.

Затем вы предоставляете доступ к базе данных, создавая ПОЛЬЗОВАТЕЛЬ в базе данных для определенного ЛОГИНА.

Затем вы ГРАНТ права ПОЛЬЗОВАТЕЛЯ.

Прочтите эти ссылки, и вы получите то, что вам нужно.

На SQL Server вы создаете имя входа / пользователя, смотрите это:

USE master
GO
CREATE LOGIN USER01
WITH PASSWORD =  'PASSword'

Затем вы используете GRANT, чтобы разрешить изменение любой базы данных:

USE master
GO 
GRANT ALTER to any DATABASE TO USER01
GO