将 MySQL SQL 语句转换为 SQL Server

将 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 上运行良好。

但是,下一个语句会出错。似乎 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;

至此为止有效。

但是,不清楚 username@'%' 和 username@'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 -> 属性。在“拥有的架构”和“数据库角色成员资格”窗口中授予所有可能的权限,但每个窗口中的 2 个拒绝权限除外。这类似于“授予所有权限”吗?

答案1

SQL Server 的工作方式有所不同。您创建登录使用用户密码,该密码与主机名或类似名称无关。

然后通过创建用户在数据库上针对某个特定的LOGIN。

然后你授予权利归于用户。

阅读这些链接,您将获得所需内容。

答案2

在 SQL Server 上,您可以创建一个登录名/用户,如下所示:

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

然后,您可以使用如下 GRANT 授予任何数据库的更改权限:

USE master
GO 
GRANT ALTER to any DATABASE TO USER01
GO

相关内容