الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

أضافة مستخدم جديد لل SQL-SERVER من VB

مغلق
بدأه server_programmer في 21 سبتمبر 2004 · 12 رد · 9,036 مشاهدة · في أرشيف قسم SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

شباب لو سمحتو ا

أستفسار

لو عندي برنامج (VISUAL BASIC) يعمل على أس كيو أل سيرفر DATABASE

و أحتاج أن أعمل في الشاشة من Visual Basic أجراء يقوم ببساطة بأضافة مستخدم جديد لمحرك SQL-SERVER

كيف يمكن عمل ذلك ؟

أو على الأقل الامر الموجود في ال SQL-SERVER و الخاص بأضافة المستخدمين

كيف صيغتة

مثلا في اوركل نكتب

التالي

create user user_name Identified by user_password

ما هي الصيغة المناظرة له في ال SQL-SERVER

و الله يعطيكم العافية

وفوق كل ذي علم عليم

http://www.leaderstechnology.com

-------------------------------

#2

إضافة مستخدم لل sql server باستخدام الفيجوال بيسك

Add a User to an SQL Server

sp_addlogin

إضافة مستخدم لل sql server باستخدام ال T-SQL

sp_adduser (T-SQL)

تم تعديل هذه المشاركة بواسطة طارق إبراهيم في 22 سبتمبر 2004 في 02:07

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#3

شكرا يا أستاذ طارق إبراهيم

و الله يجزيك بالخير

وفوق كل ذي علم عليم

http://www.leaderstechnology.com

-------------------------------

#4

هذا هو الكود الموجود في الرابط :

Public Function AddUserTOSQLServer(ByVal UserName As String, _
   ByVal Password As String, ByVal Database As String) As Boolean
'*************************************************************
'This function adds a user to an SQL server.  YOU MUST CHANGE
'THE CODE TO SUPPLY YOUR OWN CONNECTION STRING, WHERE IDENTIFIED
'BELOW.  A reference to ADO 2.0 or above is required

'Specifically, it adds a User with the Specified Password to
'the Public Group and provides permissions to the database
'specified as the third parameter.

'The return value is true if successful, false otherwise
'***********************************************************
Dim strConnString As String
Dim oConn As New ADODB.Connection
   
On Error GoTo ErrorHandler

'THIS IS WHERE YOU MUST PUT YOUR OWN CONNECTION STRING IN
'MAKE SUBSTITUTIONS FOR User ID, Password, and Data Source

strConnString = "Provider=SQLOLEDB.1;"
strConnString = strConnString & "User ID=sa;password=mypassword;"
strConnString = strConnString & "Initial Catalog=" & _
      Database & ";"
strConnString = strConnString & "Data Source=MySQLServer;"
strConnString = strConnString & "Use Procedure for Prepare=1;"
strConnString = strConnString & "Auto Translate=True;"
strConnString = strConnString & "Packet Size=4096"


oConn.Open strConnString
'Add user to database
oConn.Execute "USE Master"
oConn.Execute "EXEC sp_addlogin " & UserName & "," & _
  Password & "," & Database
    
'Grant user access to Database in public group
oConn.Execute "USE " & Database
oConn.Execute "EXEC sp_adduser " & UserName
AddUserTOSQLServer = True

ErrorHandler:
    If oConn.State <> 0 Then
        oConn.Close
    End If

    Set oConn = Nothing
    
End Function

ولكن الرجاء شرح هذه الجزئيات من  الكود بالتفصيل اذا سمحتم

USE Master

"EXEC sp_adduser "

هل نتركها كما هي او نستبدلها باسم مستخدم جديد الرجاء شرح الكود قدر الامكان

#5

كل ما عليك تغييره هو اسم قاعدة البيانات Master بقاعدة البيانات التى تود ان يتعامل معها المستخدم

اما "EXEC sp_adduser " فهو اجراء مخزن لاضافة مستخدم

لاحظ ام المستخدم الجديد سيحمل قيمته المتغير UserName

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#6

أولا اشكرك يا اخ طارق على ردودك الجميلة

وثانيا المعذرة انا كثير اسئله ولكن اتمنى ان تطولو بالكم علينا

وشؤالي هو :

كيف يمكن ان احدد الصلاحيات للمستخدم الجديد اي عن طريق الكود بالفيجوال واقصد العرض والاضافة والتعديل والحذف

#7

كيف أحدد الصلاحيه

كل ما عليك فقط ان تقوم بتمرير امر ال Grant او Deny او Revoke لعبارة ال Execute

للاسف ليس لدى vb6 الان و إلا لاعطيتك الكود كاملاً

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#8

يا اخ طارق لقد استخدمت Grant في اضافة الصلاحيات كالتالي :

Cn.Execute "USE mydb"
Cn.Execute "grant  REFERENCES ,  SELECT ,  UPDATE ,  INSERT ,   DELETE  ON [dbo].[table]  TO [user]"

ونجحت الامر 100% ولكن كيف ازيل احدى الصلحيات عن مستخدم بعد اضافتها

#9

والان استخدمت Revoke في عمليت ازالة الصلاحية من مستخدم user على جدول table وكمثال هنا لتعم الفائدة للراغبين في تنفيذ هذا الكود لزالة صلاحيت الحذف عن المستخدم كالتالي

Cn.Execute "USE mydb"
Cn.Execute "Revoke  DELETE  ON [dbo].[table]  TO [user]"

وجزاك الله خير يا اخ طارق ووفقك لما فيه خير لك

#10

سؤال للاستاذ .؟

ما هو الامر الذي اعمل به Refresh للقاعدة او Refresh للمستخدين

#11

كيف نجعل اسم المستخدم والجدول متغير فلقد جربت ان اجعل ما سبق متغير ولكن يقرأ القيمة المتغبرة على انها هي اسم المستخدم والجدول فما هي الطريقة او كيف نعدل الكود السابق لكي نستخدم الكوود مع اي مستخدم او اي جدول حسب ما نعرف له في المتغير

Dim user As String
Dim tb As String

user = "ahmed"
tb = "table1"

Cn.Execute "USE mydbaq"
Cn.Execute "GRANT  REFERENCES ,  SELECT ,  UPDATE ,  INSERT   ON [dbo].[tb]  TO [user]"

تم تعديل هذه المشاركة بواسطة طارق إبراهيم في 10 ديسمبر 2004 في 10:07

#12
اقتباس
كيف نجعل اسم المستخدم والجدول متغير

انظر للكود التالى

Dim tb As String

user = textbox1.text
tb = textbox2.text

Cn.Execute "USE mydbaq"
Cn.Execute "GRANT  REFERENCES ,  SELECT ,  UPDATE ,  INSERT   ON [dbo].[tb]  TO [user]"

جعلنا قيمة المستخدم متغير يتم قرائته من صندوق نص و نفس الفكره بالنسبه لاسم الجدول و إن كان الافضل هو وضع كل اسماء الجداول لقاعدة البيانات هذه فى combo box مثلاً و الاختيار منها

ايضاً اسماء المستخدمين كان يمكن وضعهم فى combo box و الاختيار منها سيكون حل عملى

تم تعديل هذه المشاركة بواسطة طارق إبراهيم في 10 ديسمبر 2004 في 10:05

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#13

شكراً يا اخ طارق على الرد ولكن ليس هذا سؤالي

user = textbox1.text
tb = textbox2.text

Cn.Execute "USE mydbaq"
Cn.Execute "GRANT  REFERENCES ,  SELECT ,  UPDATE ,  INSERT   ON [dbo].[tb]  TO [user]"

ولكن سؤالي لو اعتبرنا ان اسم المستخدم الذي اخذناه من textbox1.text هو احمد مثلا فان القيمة التي يأخذها في السطر

Cn.Execute "GRANT  REFERENCES ,  SELECT ,  UPDATE ,  INSERT   ON [dbo].[tb]  TO [user]"

هي user بدلاً من التي من المفترض ان يأخذها وهي احمد اي يعتبر [user] اسم المستخدم الفعلي وليس المتغير الذي وضعناه وطبعاً تظهر رسالة خطأ وهي

Invalid Opject Name 'dbo.user' .

اي لابد من تغير الاقواس او وضع علامات تنصيص او فواصل او غير ذلك لكي يقبلها كمتغير

هذا الموضوع مغلق.

مواضيع مشابهة