如何通过查询向SQL Server中的数据库中的所有对象授予权限

时间:2016-01-28 05:44:42

标签: database sql-server-2008 permissions

我在SQL Server中创建多个数据库用户。假设我创建了除默认系统管理员之外的2个用户,如下所示。

  1. sa(系统管理员)
  2. 用户1
  3. 用户2
  4. 我希望sa(系统管理员)授予所有权限,例如为user1创建表,视图等的权限。然后让user1向user2授予权限。如果我使用SQL Server GUI执行此操作,我需要检查为每个用户授予的一长串权限。

    我尝试了以下查询,但它只授予单个表而不是数据库的权限。因此,如果我的数据库有超过100个表,那么我将需要运行100多个这样的查询。因此,任何人都可以告诉我,如果有一个查询我可以执行以让 sa 向特定数据库而不仅仅是表格的不同用户授予权限。

      func createBodyWithParameters(parameters: NSMutableDictionary?,boundary: String) -> NSData {
        let body = NSMutableData()
    
        if parameters != nil {
            for (key, value) in parameters! {
    
                if(value is String || value is NSString){
                    body.appendString("--\(boundary)\r\n")
                    body.appendString("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n")
                    body.appendString("\(value)\r\n")
                }
                else if(value is [UIImage]){
                    var i = 0;
                    for image in value as! [UIImage]{
                        let filename = "image\(i).jpg"
                        let data = UIImageJPEGRepresentation(image,1);
                        let mimetype = mimeTypeForPath(filename)
    
                        body.appendString("--\(boundary)\r\n")
                        body.appendString("Content-Disposition: form-data; name=\"\(key)\"; filename=\"\(filename)\"\r\n")
                        body.appendString("Content-Type: \(mimetype)\r\n\r\n")
                        body.appendData(data!)
                        body.appendString("\r\n")
                        i++;
                    }
    
    
                }
            }
        }
        body.appendString("--\(boundary)--\r\n")
        //        NSLog("data %@",NSString(data: body, encoding: NSUTF8StringEncoding)!);
        return body
    }
    
    func generateBoundaryString() -> String {
        return "Boundary-\(NSUUID().UUIDString)"
    
    }
    
    func mimeTypeForPath(path: String) -> String {
        let pathExtension = path.pathExtension
        var stringMimeType = "application/octet-stream";
        if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension!, nil)?.takeRetainedValue() {
            if let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
                stringMimeType = mimetype as NSString as String
            }
        }
        return stringMimeType;
    }
    
    
    
    func createRequest (param : NSMutableDictionary , strURL : String) -> NSURLRequest {
    
        let boundary = generateBoundaryString()
    
        let url = NSURL(string: strURL)
        let request = NSMutableURLRequest(URL: url!)
    
        request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
        request.HTTPMethod = "POST"
        request.HTTPBody = createBodyWithParameters(param, boundary: boundary)
    
        return request
    }
    

1 个答案:

答案 0 :(得分:0)

您可以使用此查询授予类似

的权限
EXEC sp_addrolemember N'db_datawriter', N'username'

这将为数据库中的每个表提供WRITE权限(INSERT,UPDATE,DELETE)。