![将 MySQL SQL 语句转换为 SQL Server](https://linux22.com/image/604560/%E5%B0%86%20MySQL%20SQL%20%E8%AF%AD%E5%8F%A5%E8%BD%AC%E6%8D%A2%E4%B8%BA%20SQL%20Server.png)
我正在安装一个需要数据库的产品 - 只要有可用的 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
答案2
在 SQL Server 上,您可以创建一个登录名/用户,如下所示:
USE master
GO
CREATE LOGIN USER01
WITH PASSWORD = 'PASSword'
然后,您可以使用如下 GRANT 授予任何数据库的更改权限:
USE master
GO
GRANT ALTER to any DATABASE TO USER01
GO