类似这样: -------------------------------------------------------------------------------------------------------------------------- USE Master GOIF NOT EXISTS(SELECT 1 FROM sysdatabases WHERE name=N'W') EXEC('CREATE DATABASE W ON ( NAME = W_data, FILENAME = ''c:\program files\microsoft sql server\mssql\data\W.mdf'' )')SELECT * FROM sysdatabases GO --添加用户: exec sp_addlogin 'USER_W','USER_W','W' --添加到数据库 exec sp_grantdbaccess 'USER_W'--授权 GRANT ALL TO USER_W GO USE W GO
--例如:SqlConnection sqlConn = new SqlConnection ("server=服务器名;database=数据库名;uid=用户名;pwd=密码"); sqlConn_button12.Open(); string strSQL="USE Master"; SqlCommand sqlCmd = new SqlCommand (strSQL,sqlConn); sqlCmd.ExecuteNonQuery(); strSQL="另一条语句"; sqlCmd = new SqlCommand (strSQL,sqlConn); sqlCmd.ExecuteNonQuery(); strSQL="另一条语句"; sqlCmd = new SqlCommand (strSQL,sqlConn); sqlCmd.ExecuteNonQuery(); sqlCmd.Dispose(); sqlConn.Close ();
--例如:SqlConnection sqlConn = new SqlConnection ("server=服务器名;database=数据库名;uid=用户名;pwd=密码"); sqlConn.Open(); string strSQL="USE Master"; SqlCommand sqlCmd = new SqlCommand (strSQL,sqlConn); sqlCmd.ExecuteNonQuery(); strSQL="另一条语句"; sqlCmd = new SqlCommand (strSQL,sqlConn); sqlCmd.ExecuteNonQuery(); strSQL="另一条语句"; sqlCmd = new SqlCommand (strSQL,sqlConn); sqlCmd.ExecuteNonQuery(); sqlCmd.Dispose(); sqlConn.Close ();
关于授权如何将db_owner授予新用户,使用grant all to usename 无法将db_owner权限给予username?
在存储过程里执行,因为系统存储过程EXECUTE 权限已经授予 public 角色,允许任何人去执行。但是在执行系统存储过程后,将检查用户的角色成员资格。如果此用户不是运行此存储过程所需要的适当的固定服务器或数据库角色的成员,则此存储过程不会继续执行。 如果跨数据库,最好也在存储过程里执行,因为SQLSERVER不允许有跨数据库权限;只能将当前数据库中的对象和语句的权限授予当前数据库中的用户。
--------------------------------------------------------------------------------------------------------------------------
USE Master
GOIF NOT EXISTS(SELECT 1 FROM sysdatabases WHERE name=N'W')
EXEC('CREATE DATABASE W
ON
( NAME = W_data,
FILENAME = ''c:\program files\microsoft sql server\mssql\data\W.mdf'' )')SELECT * FROM sysdatabases
GO
--添加用户:
exec sp_addlogin 'USER_W','USER_W','W' --添加到数据库
exec sp_grantdbaccess 'USER_W'--授权
GRANT ALL TO USER_W
GO
USE W
GO
sqlConn_button12.Open();
string strSQL="USE Master";
SqlCommand sqlCmd = new SqlCommand (strSQL,sqlConn);
sqlCmd.ExecuteNonQuery();
strSQL="另一条语句";
sqlCmd = new SqlCommand (strSQL,sqlConn);
sqlCmd.ExecuteNonQuery();
strSQL="另一条语句";
sqlCmd = new SqlCommand (strSQL,sqlConn);
sqlCmd.ExecuteNonQuery();
sqlCmd.Dispose();
sqlConn.Close ();
sqlConn.Open();
string strSQL="USE Master";
SqlCommand sqlCmd = new SqlCommand (strSQL,sqlConn);
sqlCmd.ExecuteNonQuery();
strSQL="另一条语句";
sqlCmd = new SqlCommand (strSQL,sqlConn);
sqlCmd.ExecuteNonQuery();
strSQL="另一条语句";
sqlCmd = new SqlCommand (strSQL,sqlConn);
sqlCmd.ExecuteNonQuery();
sqlCmd.Dispose();
sqlConn.Close ();
无法将db_owner权限给予username?
如果跨数据库,最好也在存储过程里执行,因为SQLSERVER不允许有跨数据库权限;只能将当前数据库中的对象和语句的权限授予当前数据库中的用户。