Sql通过vb.net创建useraccounts

时间:2016-05-27 14:19:34

标签: sql-server vb.net

我正在尝试通过vb.net创建sql用户帐户。我正在检查用户是否已经在场,如果没有,那么创建帐户。我有下面的代码,它没有抛出错误,但它没有创建帐户。我通过管理工作室检查那些帐户不存在那里,但如果我在管理工作室使用相同的查询,它是在安全/逻辑文件夹下创建用户帐户。需要一些帮助来解决问题

Private Function createUser(ByVal UserName, ByVal Password)
    Dim crUser As Boolean
    Try
        Dim myconn As SqlConnection = New SqlConnection("Server=DEVxyz-DC1\TESTSQL;uid=sa;pwd=test12345!#%")
        Dim myreader As SqlDataReader
        Dim result As Object
        Dim command As String
        myconn.Open()
        Try
            ' Dim sqlstring As String = "IF NOT EXISTS(SELECT * from sys.server_principals WHERE name=N'" & UserName & ") CREATE LOGIN[" & UserName & "] WITH PASSWORD=N'" & Password & "',DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=ON,CHECK_POLICY=ON"
            Dim mycommand As SqlCommand
            mycommand = myconn.CreateCommand
            Command = "SELECT * from sys.server_principals WHERE name=N'" + UserName + "'"
            mycommand.CommandText = (command)
            myreader = mycommand.ExecuteReader()


            If myreader.HasRows Then
                Do While myreader.Read()
                    MessageBox.Show("Records Found,please enter another user name ")

                Loop
            Else
                MessageBox.Show("Records Not Found")
                'Create user accounts
                myreader.Close()
                command = "CREATE LOGIN[" + UserName + "] WITH PASSWORD=N'" + Password + "',DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=ON,CHECK_POLICY=ON"
                Try
                    myreader = mycommand.ExecuteReader()
                Catch y As SqlException
                    MessageBox.Show(y.ToString())
                End Try

            End If

            myreader.Close()

            ' mycommand.ExecuteNonQuery()

        Catch ep As SqlException
            MessageBox.Show(ep.ToString)
        End Try

        myconn.Close()

    Catch ex As Exception
        MessageBox.Show(ex.ToString)

    End Try
End Function

1 个答案:

答案 0 :(得分:0)

我在下面添加了声明并且它有效 mycommand.CommandText =(command)

私人功能createUser(ByVal UserName,ByVal密码)     Dim crUser As Boolean     尝试         Dim myconn As SqlConnection = New SqlConnection(" Server = DEVxyz-DC1 \ TESTSQL; uid = sa; pwd = test12345!#%")         Dim myreader作为SqlDataReader         昏暗的结果作为对象         Dim命令As String         myconn.Open()         尝试             ' Dim sqlstring As String =" IF NOT EXISTS(SELECT * from sys.server_principals WHERE name = N'"& UserName&")CREATE LOGIN [" &安培;用户名& "]密码= N'" &安培;密码& "',DEFAULT_LANGUAGE = [us_english],CHECK_EXPIRATION = ON,CHECK_POLICY = ON"             Dim mycommand As SqlCommand             mycommand = myconn.CreateCommand             命令="来自sys.server_principals的SELECT * WHERE name = N'" +用户名+"'"             mycommand.CommandText =(命令)             myreader = mycommand.ExecuteReader()

        If myreader.HasRows Then
            Do While myreader.Read()
                MessageBox.Show("Records Found,please enter another user name ")

            Loop
        Else
            MessageBox.Show("Records Not Found")
            'Create user accounts
            myreader.Close()
            command = "CREATE LOGIN[" + UserName + "] WITH PASSWORD=N'" + Password + "',DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=ON,CHECK_POLICY=ON"
            Try
                mycommand.CommandText = (command)
                myreader = mycommand.ExecuteReader()
            Catch y As SqlException
                MessageBox.Show(y.ToString())
            End Try

        End If

        myreader.Close()

        ' mycommand.ExecuteNonQuery()

    Catch ep As SqlException
        MessageBox.Show(ep.ToString)
    End Try

    myconn.Close()

Catch ex As Exception
    MessageBox.Show(ex.ToString)

End Try

结束功能