Mysql

將 MySQL SQL 語句覆蓋到 SQL Server

  • January 22, 2013

我正在安裝一個需要數據庫的產品——只要有可用的 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 -> 屬性。在“Owned Schemas”和“Database Role Memberships”視窗中授予所有可能的權限,但每個視窗中的 2 個拒絕權限除外。這類似於“授予所有特權”嗎?

SQL Server 對此的工作方式不同。您為使用者創建一個帶有密碼的LOGIN ,該密碼獨立於其主機名或類似名稱。

然後,您通過在數據庫上為某個 LOGIN創建一個USER來授予對數據庫的訪問權限。

然後您授予使用者權利。

閱讀這些連結,你會得到你需要的東西。

在 SQL Server 上,您創建一個登錄名/使用者,如下所示:

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

然後你像這樣使用 GRANT 來授予對任何數據庫的更改:

USE master
GO 
GRANT ALTER to any DATABASE TO USER01
GO

引用自:https://serverfault.com/questions/470988