Ako používať aplikáciu úlohy s prístup projektov a SQL Server 2000 Desktop Edition

Preklady článku Preklady článku
ID článku: 308312 - Zobraziť produkty, ktorých sa tento článok týka.
Rozšírené: Vyžaduje expertné kódovanie, interoperability a multiuser zručnosti.

Tento článok sa uplatňuje iba na projekt programu Microsoft Access (.adp).

Microsoft Access 2000 verziu tohto článku, pozri 318816.
Rozbaliť všetko | Zbaliť všetko

SUHRN

Tento článok vysvetľuje možnosti, obmedzenia, a riešenia pre pomocou aplikácie Microsoft SQL Server rolí v Projekt programu Microsoft Access (ADP).

DALSIE INFORMACIE

V SQL Server, môžete vytvoriť databázu úlohy pre jednoduchšie Správa povolení v databáze. Namiesto udelenia individuálnej povolenia pre každého používateľa samostatne, môžete zoskupiť používateľov s rovnakým povolenie potrebuje zvýšiť ich členov tú istú úlohu pravidelné databázy, a potom priraďovaním povolení databázy úlohu, sama. Pokiaľ osobitné Povolenie explicitne bol odmietnutý inde, získajú členské užívateľov povolenia udelené túto databázu úlohu.

Zatiaľ čo pravidelné databázy úlohy sú veľmi užitočné pre situácie, kde chcete používateľom byť schopní vykonávať vlastné ad hoc dotazy alebo aktualizácie databázy, nie sú vždy vhodné. Niekedy môžete chcieť užívateľom iba určité povolenia keď používajú osobitné použitie a nechcete, aby bol schopný zobraziť alebo upravovať údaje mimo žiadosti.

Jedna metóda, ktorá sa často používa pre prácu okolo tohto je potrebné povolenia len dať jeden SQL Server používateľské konto. Skutočné používatelia majú povolenie na pripojenie k databáza ale nie chcete zobraziť alebo upraviť všetky údaje. Po používateľ pripojí k databázy použitím jednotlivé konto používateľa, ADP by potom pomocou programovania znova pripojte použitím poverení konta používateľa, ktoré nemá mať povolenia. Pričom toto môže byť účinné, neumožňuje vám rozlišovať medzi užívateľmi v databáze alebo určiť, ktorý používateľ vykonať konkrétne kroky.

Uplatňovanie úlohy sú určené na prácu okolo Toto obmedzenie. Uplatňovanie úlohy, na rozdiel od pravidelných databázy rolí, nemajú samotní členovia. Namiesto toho používateľom prihlásiť sa na server SQL Server a pripojte k databáza pomocou vlastného poverenia. V tomto bode kontexte zabezpečenia uplatňovanie úlohu môže uplatniť pomocou programovania na existujúce pripojenie prostredníctvom pomocou sp_setapprole uložená procedúra. V SQL Server, jednotliví používatelia sú stále diferencované ale povolenia, ktoré sú k dispozícii v určitej pripojenia sú obmedzené na povolenia na uplatňovanie úlohu. Používateľa jednotlivých povolenia, či menšej alebo väčšej, už zvážiť.

Vytvorenie aplikácie úlohu

Programu Microsoft Access projekty nemajú žiadne vizuálne dizajn nástroje pre tvorbu SQL Server Security objekty ako napríklad uplatňovanie úlohy. Spoločnosť Microsoft odporúča používať klient nástroje, ktoré sú súčasťou pravidelné verziu SQL Server alebo Microsoft Office XP Developer pre vytváranie uplatňovanie úlohu a priradí sa mu povolenia. Avšak, stále môžete vytvoriť uplatňovanie úlohu a poskytnúť jej potrebné povolenia programovo prostredníctvom pomocou Transact-SQL (T-SQL) z ADP. Hoci úplná diskusia o SQL Zabezpečenie servera je mimo rozsahu pôsobnosti tohto článku, ďalšie informácie možno nájsť v SQL Server Books Online Nasledovné kroky ukazujú ako programovo vytvoriť uplatňovanie úlohu a grant nová úloha Vyberte povolenia na tabuľku:
  1. Spustite program Access.
  2. Otvoriť projekt Northwind vzorky Access.
  3. V okne databáze kliknite na tlačidlo Moduly podľa Objekty, a potom kliknite na tlačidlo Nové Ak chcete otvoriť nový modul v prostredí Visual Basic.

    Poznámka V programe Access 2007, kliknite na tlačidlo Modul v Iné skupiny na Vytvoriť kartu.
  4. Zadajte alebo prilepte nasledujúci kód do nového modulu:
    Public Function AddNewAppRole(RoleName As String, PW As String) As Boolean
    On Error GoTo EH:
    If CurrentProject.IsConnected Then
    Dim sTSQL As String
        'Create the command
    sTSQL = "EXEC sp_addapprole '" & RoleName & "','" & PW & "'"
        'Send the command
    Application.CurrentProject.Connection.Execute sTSQL
    AddNewAppRole = True
    Else
    AddNewAppRole = False
    End If
    Exit Function
    EH:
    MsgBox Err.Number & ": " & Err.Description, vbCritical
    AddNewAppRole = False
    End Function
    					
  5. Uložte modulu a ukončite Visual Basic Prostredie.
  6. Vytvoriť kópiu Zákazníci Tabuľka a uložte ho ako tNewTable. Chcete urobiť, postupujte nasledovne:
    1. V okne databáze kliknite pravým tlačidlom myši Zákazníci Tabuľka a potom kliknite na tlačidlo Uložiť ako v kontextovej ponuke.

      Poznámka V programe Access 2007, kliknite na tlačidlo Zákazníci Tabuľka na navigačnej table, kliknite na tlačidlo Tlačidlo Microsoft Office, ukážte na Uložiť ako, a potom kliknite na tlačidlo Uložiť objekt ako.
    2. V Uložiť ako dialógové okno, typu tNewTable v Uložiť tabuľky "Odberatelia" a potom kliknite na ok.
  7. V okne databáze kliknite na tlačidlo Formuláre podľa Objekty, kliknite na tlačidlo Nové, a potom kliknite na tlačidlo ok otvorí nový formulár v návrhovom zobrazení.

    Poznámka V programe Access 2007, kliknite na tlačidlo Návrhu formulára v Formuláre skupiny na Vytvoriť kartu.
  8. Pridať príkazové tlačidlo do nového formulára.
  9. Nastaviť OnClick Vlastnosť nové príkazové tlačidlo nasledujúca udalosť postup:
    On Error GoTo EH:
    'Code only works if ADP is connected.
    If CurrentProject.IsConnected Then
        Dim bNewAppRole As Boolean, strTSQL As String
        Dim strRoleName As String, strPW As String
        strRoleName = "AppRoleName"
        strPW = "Password"
        'Call function to create app role.
        bNewAppRole = AddNewAppRole(strRoleName, strPW)
        'Test to see if it failed.
        If bNewAppRole = False Then
            Exit Sub
        End If
        MsgBox "New Application role '" & strRoleName & "' created", vbInformation
        'Create command to grant permissions.
        strTSQL = "Grant Select on tNewTable to " & strRoleName
        'Send the command.
        Application.CurrentProject.Connection.Execute strTSQL
        MsgBox "Select permissions granted on tNewTable for " & strRoleName
    Else
    MsgBox "ADP must be connected to SQL Server"
    End If
    Exit Sub
    EH:
    MsgBox Err.Number & ": " & Err.Description, vbCritical
    					
  10. Zatvorte prostredie jazyka Visual Basic vrátiť do formulár.
  11. Uložte formulár a potom prepnite formulár Formulár zobrazenie.
  12. Kliknite na tlačidlo s príkazom na spustenie podkladových kód.

    Oznámenie že dostanete dva hláseniami označovať úspech. Dostanete jeden po uplatňovanie úlohu je vytvorená, a druhú po nová úloha povolenia na tNewTable.

Vykonávacie úlohy aplikácie

Hlavné komplikáciu, keď používate aplikáciu úlohy v Projekty programu Access je, že prístup používa tri pripojenia na server SQL Server zvládnuť rôzne úlohy. V ideálnom prípade, uplatňovať uplatňovanie úlohu na celý projekt, môžete by mal vykonávať sp_setapprole v kontexte všetky tri pripojenia. Objekty spracovávané každé pripojenie sú nasledovné:

  1. Používané na určenie, ktoré objekty sa zobrazia v databáze okno a pre rôzne databázy administratívne úlohy.

    Používané na otvorenie tabuliek, zobrazení, uložené procedúry, funkcie a zdroje záznamov pre formuláre a subreports (ale nie pre hlavné správy sama).

    Používané na získanie zdroje záznamov pre kombinované polia a polia zoznamu správ.
  2. Používa na otvorenie tabuliek, zobrazení, uložené procedúry, funkcie a zdroje záznamov pre formuláre a čiastkové zostavy (ale nie pre hlavné samotnej správe).

    Použité na získanie zdrojov záznamov pre combo políčka, polia zoznamu a správy.
  3. Použité na získanie zdrojov záznamov pre polí so zoznamom, zoznam krabice a správy.

Hoci pripojenia # 2 a # 3 môžu byť prístupné pomerne ľahko, neexistuje metóda k dispozícii pre spustenie uloženej procedúry v kontexte pripojenie # 1. Našťastie toto pripojenie je najmenej dôle ité z troch a je ľahko odpracované okolo výstavbu vlastné používateľa rozhranie (napríklad vo forme rozvádzača-typ) pre manipuláciu s objektmi databázy namiesto toho sa spolieha na vstavaný okno databázy.

Nasledujúce Postup využíva Access projekt Northwind vzorky preukázať ako uplatňovať uplatňovanie úlohu proti pripojenia # 2 a # 3:

  1. V okne databáze kliknite na tlačidlo Formuláre podľa Objekty, kliknite na tlačidlo Nové, a potom kliknite na tlačidlo ok otvorí nový formulár v návrhovom zobrazení.

    Poznámka V programe Access 2007, kliknite na tlačidlo Návrhu formulára v Formuláre skupiny na Vytvoriť kartu.
  2. Pridajte zoznamom novo vytvorené formulára a potom nastavte meno Nehnuteľnosť zoznamu bloku lst_AppRole.
  3. Pridanie tlačidla príkazu do formulára.
  4. Nastaviť OnClick Vlastnosť nové príkazové tlačidlo nasledujúca udalosť postup:
    On Error GoTo EH
        'This avoids a message that no records were returned.
    DoCmd.SetWarnings False
    Dim TSQL
    TSQL = "EXEC sp_setapprole 'AppRoleName', {Encrypt N 'Password'}, 'odbc'"
        'This sets the app role on Connection #2.
    Application.CurrentProject.Connection.Execute TSQL
        'This sets the app role on Connection #3.
    lst_approle.RowSource = TSQL
    lst_approle.Requery
    DoCmd.SetWarnings True
    MsgBox "The application Role is now in effect.", vbInformation
    Exit Sub
    EH:
    MsgBox Err.Number & ": " & Err.Description, vbCritical
    					
  5. Zatvorte prostredie jazyka Visual Basic vrátiť do formulár.
  6. Uložte formulár a potom prepnite formulárFormulár zobrazenie.
  7. Kliknite na tlačidlo s príkazom na spustenie podkladových kód.

    Oznámenie že sa zobrazí hlásenie, ktoré označuje úspech.
  8. V okne databáze kliknite na tlačidlo Tabuľky podľa Objekty, a potom otvorte tNewTable Tabuľka.

    Poznámka V programe Access 2007, dvakrát kliknite na tNewTable tabuľku na navigačnej table.
  9. Upraviť záznam a pokúste sa uložiť zmeny.
Všimnite si, že keď sa pokúsite zaviazať svoje zmeny, budete dostávať chybové hlásenie o nemajú dostatok povolenia. To sa vyskytuje, pretože ste dal Nová úloha aplikácie Vyberte povolenie na tNewTable Tabuľka, ale nie Aktualizácia povolenie.

Konštrukciou prístup len ukazuje objektov v Databázy okno, pre ktoré má používateľ vyberte aspoň alebo oprávnenia vykonávať. Program Access používa pripojenie # 1 určiť, ktoré objekty, používateľ má povolenia pre. Po použití aplikácie úlohu na pripojenia # 2 a # 3, databázy Okno stále ukazuje, rovnaké predmety, že to sú urobil predtým, aj keď používateľ už majú povolenia pre všetky objekty, alebo môže mať povolenia na viac objektov, ktoré nie sú zobrazené. Toto môže mať za následok neočakávané správanie pri môžete použiť okno databázy.

Napríklad, keď ste otvorili tNewTable tabuľke, "zdá" že používateľ má povolenia upravovať a Vložiť záznamy. Vložiť nový záznam ikona v spodnej časti tabuľky zapnuté, a užívateľ je schopný dať záznam v režime úprav. Nevidíte žiadne vizuálne potuchy, označiť inak, až kým pokuse o spáchanie upraviť alebo vložiť, ktoré má za následok chybové hlásenie. Prístup verí, máte povolenia pri vlastne nemusíte.

Najúčinnejšie riešenie je poskytnúť vlastné rozhranie pre užívateľa a nemuseli spoliehať na okno databázy. Pomocou rozvádzač typu používateľského rozhrania, môžete ovládať presne ktoré objekty používateľ má prístup k.

Iné obmedzenia a bezpečnostné aspekty

Subforms nefunguje

Na rozdiel od s inými objektmi databázy Access nepodporuje Vždy používajte rovnaké pripojenie na načítanie údajov zdroj Podformulár. Prístup často (ale nie vždy) vytvorí nové pripojenie na server SQL Server len zvládnuť Podformulár záznamov, alebo na získanie spájajúcej pole údajov, spája podformulára s hlavným formulárom. Pretože toto nové pripojenie nie je uplatňovanie úlohu uplatniť, chybu povolenia sa môže vyhotoviť, ak ste nemajú explicitné povolenia na objekt databázy. Bohužiaľ, toto znamená, že neexistuje spoľahlivý spôsob, ako používať viazané podformuláre, keď aplikácia úlohy sa použijú. Iba účinné riešenie je úplne neviazané podformuláre, s manipuláciu dát manipulovať pomocou programovania. To je najviac závažné obmedzenia pri používaní aplikácie úlohy v programe Access.

Správy nefunguje

Ak máte objekt, napríklad tabuľka alebo názov zobrazenia uvedený ako zdroj záznamov pre zostavu alebo čiastkovej zostavy, Access skontroluje či objekt je uvedený v okne databáze pred získavanie akýchkoľvek údajov zo servera SQL Server. Pretože okna databáze používa pripojenie, že neposkytuje uplatňovanie úlohu uplatniť, chyba je generovaný, ak nemáte explicitné povolenia na podkladového zdroja údajov.

Obísť Tento problém vždy použitie Transact-SQL vyhlásenia ako zdroj záznamov pre formuláre a správy. Napríklad, namiesto toho len použiť "Vybrať * z ViewName" "ViewName" alebo "Exec StoredProcedureName" namiesto z práve "StoredProcedureName." Týmto spôsobom, program Access odovzdá Transact-SQL vyhlásenia priamo na server SQL Server a načíta údaje založené na povolenia na uplatňovanie úlohu.

Verejná databáza úlohu

Uplatňovanie úloha získava povolenia Verejná databáza úlohu. V NorthwindCS predvolene verejnú úlohu má plnú príslušné povolenia na väčšinu objektov. Uplatňovanie úlohu preto vo všeobecnosti neefektívne. Pri vytváraní tabuľky tNewTable v "vytváranie Uplatňovanie úlohu"oddielu, verejnú úlohu nebolo udelené povolenie na tabuľku a neskôr videl účinky kontext zabezpečenia úlohu aplikácie v danej tabuľke. Iné tabuľky môžu však nie vykazovať rozdiel podľa uplatňovanie úlohu pretože verejnú úlohu má povolenia tým objekty.

VBA zabezpečenia

Pretože heslo pre uplatňovanie úlohu je vložené do aplikácie, z ktorej sa nazýva, znalý používateľa by bol schopný čítať uplatňovanie úlohu meno a heslo od zdroja kód, a potom tieto údaje použijú získať prístup na server SQL Server z iného aplikácia. Preto je to dobrý nápad na zostavovanie ADP do súboru ADE Takže zdrojový kód nie je zobraziteľný. Minimálne presadzovať heslo na Projekt VBA.

ODKAZY

Ďalšie informácie o programe Microsoft Access 2000 verziu tohto článku, kliknite na číslo článku nižšie, čím zobrazíte článok v databáze Microsoft Knowledge Base:
318816 ACC2000: Ako používať aplikáciu úlohy s prístup projektov a SQL Server 2000 Desktop Engine (MSDE 2000)
Ďalšie informácie o GRANT, pozri SQL Server Books Online. The SQL Server Books Online je k dispozícii na nasledujúcej webovej lokalite Microsoft:
http://www.Microsoft.com/SQL/techinfo/productdoc/2000/default.asp
Note This is a "FAST PUBLISH" article created directly from within the Microsoft support organization. The information contained herein is provided as-is in response to emerging issues. As a result of the speed in making it available, the materials may include typographical errors and may be revised at any time without notice. See Terms of Use for other considerations.

Vlastnosti

ID článku: 308312 - Posledná kontrola: 1. novembra 2011 - Revízia: 2.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
Kľúčové slová: 
kbexpertiseinter kbinfo kbprogramming kbadp kbvba kbhowto kbmt KB308312 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:308312

Odošlite odozvu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com