it-swarm-eu.dev

Nelze inicializovat objekt zdroje dat OLE DB "Microsoft.ACE.OLEDB.12.0" pro propojený server

Obávám se, že to bude dlouhý příběh ;

Musím přečíst nějaké textové soubory do SQL databáze. Tato databáze je na databázovém serveru SQL 2008 R2 x64. Chci použít propojený server, takže po nějakém výzkumu jsem zjistil, že musím nainstalovat poskytovatele Microsoft.ACE.OLEDB.12.0 x64. Udělal jsem to na svém místním počítači a po vytvoření propojeného serveru jsem měl nějaké potíže se čtením textových souborů.

Poskytovatel pro propojený server byl nastaven na použití Microsoft.ACE.OLEDB.12.0, zdroj dat ukázal na správnou složku a zprostředkovatel byl nastaven na „TEXT“, ale připojení nemohu otestovat. Házelo tuto chybu:

Nelze inicializovat objekt zdroje dat OLE DB "Microsoft.ACE.OLEDB.12.0" pro propojený server "XXXXXXXXX". OLE DB "Microsoft). ACE.OLEDB.12.0 "pro propojený server" XXXXXXX "vrátil zprávu" Nespecifikovaná chyba ". (Microsoft SQL Server, chyba: 7303)

Po nějakém výzkumu jsem zjistil, že služba SQL byla spuštěna pod účtem NETWORKING SERVICE. Když jsem to změnil na místní účet, všechno fungovalo dobře.

--- (Poznámka: Také jsem musel změnit některá nastavení pro poskytovatele, je zaškrtnuto "Povolit zpracování", jinak nebylo možné procházet soubory ve složce konfigurovat zdroje dat.

Nyní se ale snažím implementovat toto řešení do mé sítě zákazníků a nemůžu ho uvést do provozu. Je to také server SQL 2008 R2 x64 Db-server, je nainstalován poskytovatel Microsoft.ACE.OLEDB.12.0, ale stále hází uvedenou chybu. Zeptal jsem se jich, jaký účet se používá ke spuštění služby SQL. Toto je účet AD patřící do místní skupiny administrátorů tohoto serveru, a proto měl dostatečná oprávnění, jak vidím. Uživatel, který testuje, je připojen k databázovému stroji pomocí účtu Windows AD, který rovněž patří do skupiny administrátorů. Když se však pokusí otestovat připojení, vyvolá stejnou chybu.

Další věc, kterou jsem zkusil, je použití OPENROWSET, což také dává nespecifikovanou chybu. A ano, nastavil jsem „Ad hoc distribuovaný dotaz“ pomocí následujícího příkazu:

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO

Takže tady mám svůj vývojový box, kde všechno funguje dobře. Když se však nasadí na testovací server, má to problémy s připojením. Vlastně už nevím, co mám dělat nebo kontrolovat. Pracoval jsem a hledal několik dní. Má někdo nějaké další návrhy, které mohu vyzkoušet?

6
Stephan

Při nastavování propojeného serveru máte možnost znovu použít přihlašovací údaje uživatele, použít konkrétní účet nebo být anonymní. Když jste jej otestovali ze stejného počítače a SQL Server byl spuštěn jako místní účet, fungovalo to, protože během přihlášení bylo možné znovu použít administrátorská oprávnění.

Aby to fungovalo v síťovém scénáři, věci se stáhnou. Používáte-li službu AD, je nutné použít ke konfiguraci důvěryhodnosti Kerberos mezi strojem SQL Server a strojem hostujícím soubor MSAccess. Zpravidla to vyžaduje nějakou hru. Tento článek TechNet je dlouhodobý, ale obsahuje mnoho konfiguračních kroků a návrhů: http://support.Microsoft.com/kb/31972 .

Budete také muset nastavit server zpět, abyste mohli znovu používat účet NETWORKING SERVICE, abyste mu mohli udělit oprávnění. Na ostatních počítačích bude váš server SQL používat skrytý účet jako [doména]\[název_počítače] $. Pokud je MS Access DB na stejném počítači jako váš SQL Server, stále musíte udělit (NTFS) oprávnění ke čtení a zápisu na MSAccess DB (soubor) k účtům pro proces serveru SQL a uživatelům sítě.

3
TimG

Toto je pravděpodobně případ, kdy je na vašem počítači/serveru SQL nainstalován přesný poskytovatel. Někteří poskytovatelé nejsou ve výchozím nastavení k dispozici, takže pokud jste je nenainstalovali, nebude možné je inicializovat.

Můžete to ověřit otevřením studia správy SQL v Server Objects -> Propojené servery -> Poskytovatelé a zjistit, zda je uveden.

Pokud ne, musíte nainstalovat databázový stroj Microsoft Access (x86 nebo x64 v závislosti na instalaci serveru SQL), který nainstaluje poskytovatele za vás.

2
Chagbert

Měli byste nakonfigurovat zabezpečení třídy [~ # ~] msdainitialize [~ # ~] v Component Services jako je popsáno v Microsoft MSDN =

[~ # ~] msdainitialize [~ # ~] je třída COM, kterou poskytuje OLE DB.) třída může analyzovat OLE DB připojovací řetězce a načíst/inicializovat zprostředkovatele na základě hodnot vlastností v připojovacím řetězci.

MSDAINITILIAZE je iniciován uživateli připojenými k SQL Serveru. Pokud se k připojení k serveru SQL používá ověřování systému Windows, je poskytovatel inicializován pod přihlášeným uživatelským účtem. Pokud je přihlášeným uživatelem přihlášení SQL, je poskytovatel inicializován pod účtem služby SQL Server. Podle typu použitého přihlášení musí být příslušně poskytnuta oprávnění na MSDAINITIALIZE.

To byl důvod pro můj stejný případ.

0
brz