我正在尝试通过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
答案 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
结束功能