Access编程交流网
  • 设为首页|收藏本站|繁体中文|手机版
  •     
  • Access培训-Access开发平台-Access行业开发

  • 首页
  • 资讯
  • 技巧
  • 源码
  • 行业
  • 资源
  • 活动
  • 关于

技巧

ACCESS数据库

启动/设置/选项/背景

修复/压缩

安全/加密/解密

快捷键

版本升级/其它等

数据表

命名方式/设计规范

表设计

查询

Sql语言基础

选择查询

更新查询

删除查询

追加查询

生成表查询

交叉表查询

SQL特定查询

查询参数

查询综合应用

界面/窗体/控件

标签

文本框

命令按钮

组合框/列表框

选项组/复选框/选项按钮

选项卡

子窗体

窗体本身/综合应用

其它

报表打印

报表设计

高级报表

模块/函数/VBA/API/系统

VBA基础

内置函数

调试/跟踪/Debug

模块/类模块

API/COM/系统相关

字符数字日期

网络通信游戏

加密解密安全

文件处理

经典算法

宏/菜单/工具栏/功能区

宏/脚本

菜单/工具栏

功能区/Ribbon

图表/图形/图像/多媒体

图表

图形/图像

音频

视频/动画

DAO/链接表/ADO/ADP

DAO/链接表/ODBC

ADO/RDO

ADP

ActiveX/第三方控件/插件

Treeview树控件

ListView列表控件

Toolbar工具栏控件

微软其它控件

Dbi-Tech

CodeJock

Grid++Report

FastReport

ComponentOne

加载项/插件/Addin

OFFICE集成/导入导出/交互

Excel导入导出/交互

Word导入导出/交互

PPT交互

Outlook控制/邮件

Text文本文件/INI/CSV

PDF/SWF/XML格式

CAD格式

Sharepoint/其它Office

SqlServer/其它数据库

表

视图

存储过程/触发器

函数

用户/权限/安全

调试/维护

SqlServer其它/综合

发布/打包/文档/帮助

开发版/运行时

打包/发布/部署

开发文档/帮助制作

Access完整行业系统

采购管理系统

销售管理系统

仓库管理系统

人力资源管理HRM

CRM管理系统

MRP/ERP管理系统

BRP/流程优化

其它管理系统

心得/经验/绝招
其它/杂项
Excel技巧

Excel应用与操作

Excel开发编程

Word技巧

Word应用与操作

Word开发编程

Outlook技巧

Outlook应用与操作

Outlook开发编程

热门文章

  • 怎样判断一个表是否存在于数..
  • SQL语句集锦5
  • 如何在ADP中读取SQL服..
  • 快速获取Excel文件所有..
  • 在Recordset对象中..
  • Access数据库手动添加..

最新文章

  • 实验报告 --DAO与AD..
  • 用代码创建mdb格式的Ac..
  • 连接后台数据库提示 无法启..
  • 64位windows系统如..
  • Access的DAO准确获..
  • 利用代码自动创建ODBC源

联系方式

Access交流网(免费Access交流)

QQ:18449932 

网  址:www.access-cn.com

当前位置:首页 > 技巧 > DAO/链接表/ADO/ADP
DAO/链接表/ADO/ADP

一组SQL Server身份验证管理子程序

 

本子程序配合《关于 SQL Server 2000 身份验证与安全控制》一文。

Option Compare Database
Public appAccess As access.Application

Sub CallSQLDMOSQLServerLogin()
    Dim srvname As String
    Dim suid As String
    Dim pwd As String
   
    ' 设置 SQL Server 的登录参数
    srvname = "(local)"
    'suid = "sa"
    'pwd = ""
   
    ' 调用 SQL Server 登录过程
    SQLDMOSQLServerLogin srvname, suid, pwd
End Sub


Sub SQLDMOSQLServerLogin(srvname As String, suid As String, pwd As String)
    Dim srv1 As SQLDMO.SQLServer
   
    ' 新建一个服务器实例
    Set srv1 = New SQLDMO.SQLServer
   
    ' 调用 SQL Server 登录连接方法
    srv1.Connect srvname, suid, pwd
   
   
    ' 断开连接
    srv1.Disconnect
    Set srv1 = Nothing
End Sub


Sub CallSQLDMOWindowsLogin()
    Dim srvname As String
   
    ' 设置 Windows 登录参数
    srvname = "(local)"
   
    SQLDMOWindowsLogin srvname
End Sub


Sub SQLDMOWindowsLogin(srvname As String)
    Dim srv1 As SQLDMO.SQLServer
   
    ' 新建一个服务器实例
    Set srv1 = New SQLDMO.SQLServer
   
    ' 在调用前,设置 LoginSecure 属性为 True
    ' 使用服务名进行连接
    srv1.LoginSecure = True
    srv1.Connect srvname
   
    ' 断开连接
    srv1.Disconnect
    Set srv1 = Nothing
End Sub

Sub CallChangeServerAuthenticationMode()
    Dim constAuth As Byte
   
    ' 设置 constAuth 参数为:
    '    SQLDMOSecurity_Integrated 为 Windows Authentication 模式
    '    SQLDMOSecurity_Mixed 为 Mixed Authentication 模式
   
    ' 设置 constAuth 的默认值
    constAuth = SQLDMOSecurity_Mixed
   
    ' 调用改变 SQL Server 身份认证模式的方法
    ChangeServerAuthenticationMode constAuth
End Sub

Sub ChangeServerAuthenticationMode(constAuth As Byte)
    Dim srv1 As SQLDMO.SQLServer
   
    ' 指定哪个服务器,默认为 Local (本地服务器)
    srvname = "(local)"
   
    ' 使用集成安全(Windows)方式新建一个 SQL Server 对象并进行连接
    Set srv1 = New SQLDMO.SQLServer
    srv1.LoginSecure = True
    srv1.Connect srvname
   
    ' 设置 SecurityMode 属性为 Windows 或混合身份验证模式
    srv1.IntegratedSecurity.SecurityMode = constAuth
    srv1.Disconnect
   
    ' 调用 Stop 方法停止服务器,直到服务器完全停止
    srv1.Stop
    Do Until srv1.Status = SQLDMOSvc_Stopped
    Loop
   
    ' 重新以混合模式启动服务器
    srv1.Start True, srvname
   
    ' 断开连接
    srv1.Disconnect
    Set srv1 = Nothing
End Sub

Sub ToWindowsAuthentication()
    Dim srv1 As SQLDMO.SQLServer
   
    ' 指定哪个服务器,默认为 Local (本地服务器)
    srvname = "(local)"
   
    ' 使用集成安全(Windows)方式新建一个 SQL Server 对象并进行连接
    Set srv1 = New SQLDMO.SQLServer
    srv1.LoginSecure = True
    srv1.Connect srvname
   
    ' 设置 SecurityMode 属性为 Windows 身份验证模式
    srv1.IntegratedSecurity.SecurityMode = SQLDMOSecurity_Integrated
    srv1.Disconnect
   
    ' 调用 Stop 方法停止服务器,直到服务器完全停止
    srv1.Stop
    Do Until srv1.Status = SQLDMOSvc_Stopped
    Loop
   
    ' 重新以混合模式启动服务器
    srv1.Start True, srvname
   
    ' 断开连接
    srv1.Disconnect
    Set srv1 = Nothing

End Sub

Sub WindowsToMixedAuthentication()
Dim srv1 As SQLDMO.SQLServer

    ' 指定哪个服务器,默认为 Local (本地服务器)
    srvname = "(local)"
   
    ' 使用集成安全(Windows)方式新建一个 SQL Server 对象并进行连接
    Set srv1 = New SQLDMO.SQLServer
    srv1.LoginSecure = True
    srv1.Connect srvname
   
    ' 设置 SecurityMode 属性混合身份验证模式
    srv1.IntegratedSecurity.SecurityMode = SQLDMOSecurity_Mixed
    srv1.Disconnect
   
    ' 调用 Stop 方法停止服务器,直到服务器完全停止
    srv1.Stop
    Do Until srv1.Status = SQLDMOSvc_Stopped
    Loop
   
    ' 重新以混合模式启动服务器
    srv1.Start True, srvname
   
    ' 断开连接
    srv1.Disconnect
    Set srv1 = Nothing

End Sub

Sub CallOpenADPWindowsOrSQLServer()
    Dim srvname As String
    Dim dbname As String
    Dim prpath As String
    Dim prname As String
    Dim suid As String
    Dim pwd As String
    Dim bolWindowsLogin As Boolean
   
    ' 设置打开 ADP 程序的参数
    srvname = "(local)"
    dbname = "NorthwindCS"  ' ADP 连接的数据库
    prpath = "C:\Documents and Settings\Administrator\My Documents\"    ' ADP 文件所在的磁盘位置
    prname = "NorthwindCS"  ' ADP 文件名
    suid = "msdn5"
    pwd = "password"
   
    ' 该参数用于控制当前用户使用 Windows 登录
    ' 代替 SQL Server 的 suid 和 pwd
    bolWindowsLogin = False
   
    ' 使用 Windows 或 SQL Server 登录调用打开名为 prname ADP 的子程序
    OpenADPWindowsOrSQLServer srvname, dbname, prpath, prname, suid, pwd, bolWindowsLogin
End Sub

Sub OpenADPWindowsOrSQLServer(srvname As String, dbname As String, _
    prpath As String, prname As String, _
    suid As String, pwd As String, bolWindowsLogin As Boolean)

    Dim bolLeaveOpen As Boolean
    Dim strPrFilePath As String
    Dim sConnectionString As String
   
    ' 是否保持现有打开的程序?
    If MsgBox("在该过程中是否关闭打开的 ADP?", vbYesNo) = vbYes Then
        bolLeaveOpen = True
    End If
   
    ' 新建 Access 会话实例 (使用 .9 : Access 2000, .10 : access 2002)
    Set appAccess = CreateObject("access.Application.9")
   
    ' 使用登录名和口令打开 ADP 并使其可视
    strPrFilePath = prpath & prname
    appAccess.OpenaccessProject strPrFilePath
    appaccess.Visible = True
   
    ' 指定 ADP 使用的新的 Windwos 或 SQL Server 登录方式
    If bolWindowsLogin Then
        appaccess.CurrentProject.OpenConnection _
            "PROVIDER=SQLOLEDB.1;INTEGRATED SECURITY=SSPI;" & _
            "PERSIST SECURITY INFO=FALSE;INITIAL CATALOG=" & _
            dbname & ";DATA SOURCE=" & srvname
    Else
        sConnectionString = "PROVIDER=SQLOLEDB.1;INITIAL CATALOG=" & _
            dbname & ";DATA SOURCE=" & srvname
        appaccess.CurrentProject.OpenConnection _
            sConnectionString, _
            suid, pwd
    End If
   
    ' 按上面提出的要求关闭 access 会话实例
    If bolLeaveOpen = False Then
        appaccess.CloseCurrentDatabase
        Set appaccess = Nothing
    End If
End Sub

Sub CallLoginDemo()
    Dim srvname As String
    Dim suid As String
    Dim pwd As String
   
    ' 设置登录 SQL Server 的参数
    srvname = "(local)"
    suid = "sa"
    pwd = ""
   
    ' 调用 SQL Server 登录子程序
    LoginDemo srvname, suid, pwd
End Sub


Sub LoginDemo(srvname As String, suid As String, pwd As String)
    Dim srv1 As SQLDMO.SQLServer
    Dim lgn1 As SQLDMO.Login
   
    ' 新建一服务器实例
    Set srv1 = New SQLDMO.SQLServer
   
    ' 以 SQL Server 方式连接 SQL Server
    srv1.Connect srvname, suid, pwd
   
    ' 新建登录对象
    Set lgn1 = New SQLDMO.Login
   
    ' 添加默认 SQL Server 登录 msdn6
    lgn1.Name = "UserX"
    lgn1.Database = "NorthwindCS"
    lgn1.SetPassword "", "password"
    srv1.Logins.Add lgn1
   
    '重新新建登录对象
    Set lgn1 = New SQLDMO.Login
   
    ' 添加基于 Windows 组 SQL_users 的登录对象
    lgn1.Name = "MYDESK\UserSQL"
    lgn1.Database = "NorthwindCS"
    lgn1.Type = SQLDMOLogin_NTGroup
    srv1.Logins.Add lgn1
   
    ' 在添加登录后,列出登录列表
    Debug.Print "添加 2 个新登录后的登录列表:"
    For Each lgn1 In srv1.Logins
        Debug.Print DecodeLoginType(lgn1.Type), lgn1.Name
    Next lgn1
   
    ' 删除刚新建的登录
    srv1.Logins.Remove "MYDESK\UserSQL"
    srv1.Logins.Remove "UserX"
   
    ' 列出登录列表
    Debug.Print vbCr & "删除 2 个新登录后的登录列表:"
    For Each lgn1 In srv1.Logins
        Debug.Print DecodeLoginType(lgn1.Type), lgn1.Name
    Next lgn1
   
    ' 断开连接
    srv1.Disconnect
    Set srv1 = Nothing
End Sub


Function DecodeLoginType(lgn_type As Byte) As String

    Select Case lgn_type
        Case 0
            DecodeLoginType = "SQLDMOLogin_NTUser"
        Case 1
            DecodeLoginType = "SQLDMOLogin_NTGroup"
        Case 2
            DecodeLoginType = "SQLDMOLogin_Standard"
        Case Else
            DecodeLoginType = "超出范围"
    End Select

End Function

Sub MakeLoginWithDatareaderUser()
    Dim srv1 As SQLDMO.SQLServer
    Dim lgn1 As SQLDMO.Login
    Dim usr1 As SQLDMO.User
    Dim srvname As String
    Dim suid As String
    Dim pwd As String
    Dim dbname As String
    Dim prpath As String
    Dim prname As String
    Dim bolWindowsLogin As Boolean
   
    ' 设置参数
    srvname = "(local)"
    suid = "sa"
    pwd = ""
    dbname = "NorthwindCS"
   
    ' 新建服务器实例
    Set srv1 = New SQLDMO.SQLServer
   
    ' 以 SQL Server 登录方式进行连接
    srv1.Connect srvname, suid, pwd
   
    ' 新建一个 SQL Server 登录对象 UserX
    suid = "UserX"
    Set lgn1 = New SQLDMO.Login
    lgn1.Name = suid
    lgn1.Database = dbname
    lgn1.SetPassword "", pwd
    srv1.Logins.Add lgn1
   
    ' 在数据库 NorthwindCS 上新建一个用户对象 UserX,并与登录对象 UserX 相关联
    Set usr1 = New SQLDMO.User
    usr1.Name = suid
    usr1.Login = lgn1.Name
    srv1.Databases(dbname).Users.Add usr1
    srv1.Databases(dbname).DatabaseRoles("db_datareader").AddMember usr1.Name
   
    ' 设置调用 ADP 的子程序参数
    prpath = "C:\Documents and Settings\Administrator\My Documents\"
    prname = "NorthwindCS"
   
    ' 该参数用于控制当前用户使用 Windows 登录
    ' 代替 SQL Server 的 suid 和 pwd
    bolWindowsLogin = False
   
    ' 使用 Windows 或 SQL Server 登录调用打开名为 prname ADP 的子程序
    OpenADPWindowsOrSQLServer srvname, dbname, prpath, prname, suid, pwd, bolWindowsLogin
End Sub


Sub CleanUpAfterMakeLoginWithDAtaReader()
    Dim srv1 As New SQLDMO.SQLServer
   
    srv1.Connect "(local)", "sa", ""
   
    srv1.Databases("NorthwindCS").Users.Remove "UserX"
    srv1.Logins.Remove "UserX"
End Sub

发布人:zhuyiwen…-Access中国  
分享到:
点击次数:  更新时间:2003-12-30 16:11:39  【打印此页】  【关闭】
上一条:大数据库的设计技巧  下一条:在ACCESS2000中如何用VBA代码打开一个带有密码的数据库



相关文章

  • • 实验报告 --DAO与ADO效率之比较
  • • 用代码创建mdb格式的Access文件
  • • 连接后台数据库提示 无法启动应用程序。工作组信息文件丢失,或是已被其它用户以独占方式打开 的解决办法
  • • 64位windows系统如何使用64位的ADO连接Accesss accdb数据库(ACE.OLEDB)
  • • Access的DAO准确获取记录集Recordset的记录数Recordcount
  • • 利用代码自动创建ODBC源
  • • 在打开Ado记录集之前尽量先判断记录集有否打开,如打开则先关闭之
  • • 快速获取Excel文件所有工作表表名

热门文章

  • [2005-02-05] 打开带密码的数据库/修改密码/创建组和用户access数据库
  • [2015-01-18] ADO直接读Excel的数据access数据库
  • [2005-02-06] Access使用Ado列出所有的表access数据库
  • [2003-12-12] 一个简单的Ado用法示例access数据库
  • [2003-12-12] ADO三大对象的属性、方法、事件及常数access数据库
  • [2005-02-18] SQL语句集锦3access数据库

热门产品

公司动态|在线留言|在线反馈|友情链接|会员中心|站内搜索|网站地图

中山市天鸣科技发展有限公司 版权所有 1999-2023 粤ICP备10043721号

QQ:18449932

Access应用 Access培训 Access开发 Access平台

access|数据库|access下载|access教程|access视频|access软件

Powered by MetInfo 5.3.12 ©2008-2025  www.metinfo.cn