數據庫區分大小寫,創建視圖,表,索引的權限監測大全.(適應各種數據庫)
適應不同的數據庫. oracle,mysql, sqlserver,pgsql. 檢查連接用戶權限.
在需要安裝一個系統的時候,需要檢查當前數據庫連接用戶的權限是否符合要求,不同類型的數據庫判斷權限不同的方法.
爲了一勞永逸的解決問題,請參考這個馳騁工作流引擎用的檢查方法,
簡單粗暴最有效, http://ccflow.org 歡迎使用馳騁BPM.
/// <summary>
/// 檢查是否可以安裝馳騁BPM系統
/// </summary>
/// <returns></returns>
public static bool IsCanInstall()
{
string sql = "";
string errInfo = "";
try
{
errInfo = " 當前用戶沒有[查詢系統表]的權限. ";
if (DBAccess.IsExitsObject("AA"))
{
errInfo = " 當前用戶沒有[刪除表]的權限. ";
sql = "DROP TABLE AA";
BP.DA.DBAccess.RunSQL(sql);
}
errInfo = " 當前用戶沒有[創建表]的權限. ";
sql = "CREATE TABLE AA (OID int NOT NULL)"; //檢查是否可以創建表.
BP.DA.DBAccess.RunSQL(sql);
errInfo = " 當前用戶沒有[插入數據]的權限. ";
sql = "INSERT INTO AA (OID) VALUE(100 )";
BP.DA.DBAccess.RunSQL(sql);
errInfo = " 當前用戶沒有[update 表數據]的權限. ";
sql = "UPDATE AA SET OID=101";
BP.DA.DBAccess.RunSQL(sql);
errInfo = " 當前用戶沒有[delete 表數據]的權限. ";
sql = "DELETE FROM AA";
BP.DA.DBAccess.RunSQL(sql);
errInfo = " 當前用戶沒有[創建表主鍵]的權限. ";
DBAccess.CreatePK("AA", "OID", SystemConfig.AppCenterDBType);
errInfo = " 當前用戶沒有[創建索引]的權限. ";
DBAccess.CreatIndex("AA", "OID"); //可否創建索引.
errInfo = " 當前用戶沒有[查詢數據表]的權限. ";
sql = "select * from AA "; //檢查是否有查詢的權限.
BP.DA.DBAccess.RunSQLReturnTable(sql);
errInfo = " 當前數據庫設置區分了大小寫,不能對大小寫敏感,如果是mysql數據庫請參考 https://blog.csdn.net/ccflow/article/details/100079825 ";
sql = "select * from aa "; //檢查是否區分大小寫.
BP.DA.DBAccess.RunSQLReturnTable(sql);
if (DBAccess.IsExitsObject("AAVIEW"))
{
errInfo = " 當前用戶沒有[刪除視圖]的權限. ";
sql = "DROP VIEW AAVIEW";
BP.DA.DBAccess.RunSQL(sql);
}
errInfo = " 當前用戶沒有[創建視圖]的權限.";
sql = "CREATE VIEW AAVIEW AS SELECT * FROM AA "; //檢查是否可以創建視圖.
BP.DA.DBAccess.RunSQL(sql);
errInfo = " 當前用戶沒有[刪除視圖]的權限.";
sql = "DROP VIEW AAVIEW"; //檢查是否可以刪除視圖.
BP.DA.DBAccess.RunSQL(sql);
errInfo = " 當前用戶沒有[刪除表]的權限.";
sql = "DROP TABLE AA"; //檢查是否可以刪除表.
BP.DA.DBAccess.RunSQL(sql);
return true;
}
catch (Exception ex)
{
if (DBAccess.IsExitsObject("AA") == true)
{
sql = "DROP TABLE AA";
BP.DA.DBAccess.RunSQL(sql);
}
if (DBAccess.IsExitsObject("AAVIEW") == true)
{
sql = "DROP VIEW AAVIEW";
BP.DA.DBAccess.RunSQL(sql);
}
string info = "馳騁工作流引擎 - 檢查數據庫安裝權限出現錯誤:";
info += "\t\n1. 當前登錄的數據庫帳號,必須有創建、刪除視圖或者table的權限。";
info += "\t\n2. 必須對錶有增、刪、改、查的權限。 ";
info += "\t\n3. 必須有刪除創建索引主鍵的權限。 ";
info += "\t\n4. 我們建議您設置當前數據庫連接用戶爲管理員權限。 ";
info += "\t\n ccbpm檢查出來的信息如下:" + errInfo;
info += "\t\n etc: 數據庫測試異常信息:" + ex.Message;
throw new Exception("err@" + info);
// return false;
}
return true;
}