MS Access 上云端(1)-何保辛
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access365/SharePoint/互联网


MS Access 上云端(1)

发表时间:2012/8/18 0:53:20 评论(2) 浏览(12708)  评论 | 加入收藏 | 复制
   
摘 要:云端计算已经距离我们不远了,甚至触手可及了。Access与云端数据库连接其实就是那么简单。
正 文:

 

 

第一讲:用 Microsoft Access 来建立 SQL Azure Database 的登录


这里我们会用 Access 及 VBA 代码 往 SQL Azure 进行 Pass-thru Query 来建立登入过程。登入后,Access 就能获得 Azure 的 表单、视图、存储过程 的参照了。创建登录的方式,其实就是一句Transact-SQL (T-SQL) :

Create LOGIN MyLoginName WITH password = 'zX/w3-q7jU'


而事实上,应用程序的用户是不用记得这个那么难记的密码的!因为这个用户名和密码其实只是提供我们的 Access 应用程序使用,用户根本也看不到、摸不着的。


其实,创建这个 SQL-Azure 的登录号和密码是有几个步骤的。然而用来操作 SQL-Azure 的 T-SQL,其实大部分都与我们平常连入 MS SQL 相类似的。明细的介绍就看看一下的步骤吧!


1) 建立一个“强”密码,这个是与 Azure 的密码策略攸关的

使用“强”密码是尤其重要的一件事,因为这事关到其他所有的安全措施的,在 SQL Azure 上根本就不能使用 Windows 自身的登录系统 Windows Authentication,什么 WorkGroup, AD 等在公网上是没有派上用场的。记得密码至少8个字节,最少一个数字 或 一个特别符号 例如 &, -, /, ~, ^ 等。


2) 所用的文本时不能与 ODBC 的连接字串有冲突的

为了避免我们编写 ODBC连接字串的麻烦,我们一定不可以在我们的 用户名 和 密码 上面 使用 []{}(),;?*!@ 这些字符。


3) 创建一个 Transact-SQL 登录语句

我们将要在一个Pass-thru Query 里面使用 T-SQL Create LOGIN 来建立登录。由于 Pass-thru 查询是直接把 SQL 毫无隐藏的传递到 SQL Azure,所以大部分情况这些 SQL 就像我们平常用 SQL Server Management Studio SMSS 一样的反应过来:

Create LOGIN MyLoginName WITH password = 'zX/w3-q7jU'

* 注意: Create LOGIN 只能是一个SQL批次语句里唯一的一条语句



4) 确认 登录名称和密码 是在 'master' 库里面建立的

这是必要的,因为在 SQL Azure 内与 SQL Server 不同的地方就是 "USE master" 是无效的语句!USE 语句根本就在 SQL Azure 里面不被支持的。因此,我们在 Access 里,就需要在连接字串列用 "DATABASE=master;" 来克服了。我们就像以下语句用一个让人混淆的名字去建立一个函数去创建这个 连接字串吧:



Public Function obfuscatedFunctionName() As String
    obfuscatedFunctionName = "ODBC;" _
        & "DRIVER={SQL Server Native Client 10.0};" _
        & "SERVER=tcp:MyServerName.database.windows.net,1433;" _
        & "UID=MyUserName@MyServerName;" _
        & "PWD=MyPassword;" _
        & "DATABASE=master;" _
        & "Encrypt=Yes"
End Function




我以后的连载里再会教大家怎么 用 Microsoft Access 去建立更安全的 SQL Azure 应用。



5) 创建一个用来执行这个登录的 SQL 执行语句

把以下的 ExcecuteaterDSQL 函数放进一个公用模块,这个函数就是用来执行我们的 Create LOGIN 语句的。我们随时可以调用这个函数往 SQL Azure 发出执行一个没有回传的 T-SQL 语句。这个函数回传 true 当语句能成功的执行到结束。





'这函数是从 SQL Azure 服务的 master 库里执行一个 Action Query SQL
'使用方式: Call ExecMasterDBSQL(strSQL) or If ExecMasterDBSQL(strSQL) = False Then
'
Function ExecMasterDBSQL(strSQL As String) As Boolean
On Error GoTo ErrHandle

    Dim db As DAO.Database
    Dim qdf As DAO.QueryDef

    ExecuteMasterDBSQL = False  '默认值

    Set db = CurrentDb

    '建立临时不记名的 Pass-through QueryDef. This is a
    '这是 Microsoft Developer Reference 建议使用的习惯
    Set qdf = db.CreateQueryDef("")
    '调用函数取得连接 SQL Azure 的连接字串
    qdf.Connect = obfuscatedFunctionName
    '所要执行的SQL语句
    qdf.SQL = strSQL
    '若果 SQL 不需要回传记录的,就需要这个设置
    qdf.ReturnsRecords = False
    '执行这个查询
    qdf.Execute dbFailOnError
    '若果没有错误发生
    ExecMasterDBSQL = True

ExitHere:
    '安全理由 也为释放内存,清除变量
    On Error Resume Next
    Set qdf = Nothing 
    Set db = Nothing 
    Exit Function

ErrHandle:
    MsgBox "Error " & Err.Number & vbCrLf & Err.Description _ 
    & vbCrLf & "In procedure ExecMasterDBSQL"
    Resume ExitHere 

End Function 





6) 让用户输入登入名称和密码

我们可以很简单的做个窗体来让用户登入的。我们可以再窗体内添加两个文本框,与及一个命令按钮,两个文本框都是不绑定数据源的。给它们取名 txtLoginName 及 txtPassword,命令按钮为 cmdCreateLogin。那个表单就跟下面的差不多了:


 

然后把下面的代码到命令按钮的Click事件。验证了输入的名称和密码已经录入后,就会呼叫 ExecMasterDBSQL 函数来进行登录到 SQL Azure master库。




Private Sub cmdCreateLogin_Click()

    Dim strSQL As String

    strSQL = "Create LOGIN " & Me.txtLoginName & " WITH password = '" & Me.txtPassword & "'"

    '检查用户和密码是否已经录入
    If Len(Me.txtLoginName & vbNullString) = 0 Then
        MsgBox "请在登录用户输入数据", vbCritical
    ElseIf Len(Me.txtPassword & vbNullString) = 0 Then
        MsgBox "Please enter a value in the Password text box.", vbCritical
    Else
        '执行 ExecMasterDBSQL 函数
        If ExecMasterDBSQL(strSQL) = False Then
            MsgBox "登入失败!", vbCritical
        Else
            MsgBox "成功登入!", vbInformation
        End If
    End If
End Sub



以上的代码检查 ExecMasterDBSQL 函数的返回值,并知会用户这次登录是否成功建立。当我们成功建立一个登录后,我们可以创建 “数据库用户”,并为这个新建的用户授权。创建用户我会放在 第二课为大家介绍的,暂时写到这里。谢谢关注。


注意:需要为 Access 连接 SQL Azure 你需要安装 Microsoft SQL Server 2008 R2 ODBC Driver.

32位 (x86) 操作系统 - 4.5 MB  下载
64位 操作系统 - 4.5 MB 下载

它们的详细信息可以再这里参考: The Microsoft SQL Server 2008 R2 Feature Pack 有关 "Microsoft SQL Server 2008 R2 Native Client"。



开发者你们好,这是地球信息思维开发者 dbaseIIIer (QQ325613888) 

更多的 Access/VBA 互联网交互技术,可以参考 Accessoft.com 内部栏目  互联网技术栏目

更多的思维在  新浪微博   Access贴吧  VisualPHP贴吧





Access软件网交流QQ群(群号:198465573)
 
 相关文章
mssql与access的sql语法差异  【umvsoft整理  2008/7/25】
SQL server与access的大概区别\什么是sqlserv...  【麥田  2012/4/25】
Microsoft SQL Server介绍  【周芳(转载)  2012/9/18】
常见问答
技术分类
相关资源
文章搜索
关于作者

何保辛

文章分类

文章存档

友情链接