服务器: 消息 7399,级别 16,状态 1,行 16
OLE DB 提供程序 'Microsoft.Jet.OLEDB.4.0' 报错。验证失败。
[OLE/DB provider returned message: 无法启动应用程序。工作组信息文件丢失,或是已被其它用户以独占方式打开。]
OLE DB 错误跟踪[OLE/DB Provider 'Microsoft.Jet.OLEDB.4.0' IDBInitialize::Initialize returned 0x80040e4d:  验证失败。]

解决方案 »

  1.   

    看看你的EXCEL文件是不是被打开了,没有关闭.看看有没有EXCEL进程没有杀掉.
      

  2.   

    你不提供你出错的语句,别人怎么知道在哪儿出错?貌似你的access的打开方式为独占,更换一种打开方式
      

  3.   

    应该是文件处于打开状态
    或者
    Microsoft.Jet.OLEDB.4.0不支持
      

  4.   

    o .sorry 。我提供一下:是别人的-----------------------------------------------------------
    -- SQL Server 2000 Bible 
    -- Hungry Minds 
    -- Paul Nielsen-- Cape Hatteras Advntures v.2 sample database - Populate-- this script will populate the CHA2 database
    -- from CHA1_Customers.mdb Access file
    -- and CHA1_Schedule.xls Excel Spreadsheet
    -- using distributed queries-- This script mirrors the CHA_Convert DTS package -----------------------------------------------------------
    -----------------------------------------------------------USE CHA2-- establish Access Linked Server
    EXEC sp_DropServer @server = 'CHA1_Customers'
    go
    EXEC sp_addlinkedserver 
      'CHA1_Customers', 
      'Access 2000', 
      'Microsoft.Jet.OLEDB.4.0', 
      'C:\SQLServerBible\CHA1_Customers.mdb'
    go-- establish Excel Linked Server
    EXEC sp_DropServer @server = 'CHA1_Schedule'
    go
    Execute sp_addlinkedserver 
      'CHA1_Schedule', 
      'Excel', 
      'Microsoft.Jet.OLEDB.4.0', 
      'C:\SQLServerBible\CHA1_Schedule.xls',  
      NULL, 
      'Excel 5.0'
    goEXEC sp_helpserver-- Step 0: Initialize the Database
    DELETE Customer
    DELETE CustomerType
    DELETE Event_mm_Customer
    DELETE Event_mm_Guide
    DELETE Tour_mm_Guide
    DELETE Event
    DELETE Tour
    DELETE BaseCamp
    DELETE Guide-- Step 1: Customer Types
    SELECT DISTINCT CustomerType
      FROM CHA1_Customers...Customers 
      WHERE CustomerType IS NOT NULLINSERT CustomerType(Name)
      SELECT DISTINCT CustomerType
        FROM CHA1_Customers...Customers 
        WHERE CustomerType IS NOT NULL  SELECT * FROM CustomerType-- Step 2: Customers
    SELECT DISTINCT ContactLastName, ContactFirstName, CustomerType
      FROM CHA1_Customers...Customers 
      WHERE ContactLastName IS NOT NULLSELECT * FROM CustomerType
    SELECT * FROM CHA1_Customers...CustomersINSERT Customer(LastName, FirstName, CustomerTypeID, Address, 
        City,Country, eMail, NickName,FirstTour, Medical)
      SELECT DISTINCT ContactLastName, ContactFirstName, CustomerTypeID,BillingAddress, 
        City, Country, EMailAddress,NickName, FirstTour, HealthIssues
        FROM CHA1_Customers...Customers C
          LEFT OUTER JOIN CustomerType
            ON C.CustomerType = CustomerType.[Name]
        WHERE ContactLastName IS NOT NULLSELECT * FROM Customer-- Step 3: Base Camps
    INSERT BaseCamp(Name)
      SELECT DISTINCT [Base Camp]
        FROM CHA1_Schedule...[Base_Camp]
        WHERE [Base Camp] IS NOT NULLSELECT * FROM BaseCamp-- Step 4: Tours
    INSERT Tour ([Name], BaseCampID)
      SELECT DISTINCT Tour, BaseCampID
        FROM CHA1_Schedule...Tour X
          JOIN BaseCamp
            ON X.[Base Camp] = BaseCamp.Name
        WHERE Tour IS NOT NULLSELECT * FROM Tour-- Step 5: Guides
    INSERT Guide(FirstName, LastName)
      SELECT DISTINCT 
          LEFT([Lead Guide],CharIndex(' ', [Lead Guide])-1),
          RIGHT([Lead Guide],Len([Lead Guide])-CharIndex(' ', [Lead Guide]))
        FROM CHA1_Schedule...Lead_Guide
        WHERE [Lead Guide] IS NOT NULLSELECT * FROM Guide-- Step 6: Events
    SELECT DISTINCT *
      FROM CHA1_Schedule...EventSELECT * FROM EventINSERT Event (TourID, DateBegin, Code)
      SELECT DISTINCT Tour.TourID, [Date], EventCode
        FROM CHA1_Schedule...Event X
          JOIN Tour 
            ON X.Tour = Tour.Name-- Step 7: Event_mm_Customer
    SELECT * FROM Event_mm_CustomerINSERT Event_mm_Customer(CustomerID, EventID)
      SELECT DISTINCT Customer.CustomerID, Event.EventID
        FROM CHA1_Schedule...Customer X
          JOIN Customer
            ON X.LastName = Customer.LastName
              AND X.FirstName = Customer.FirstName
          JOIN Event 
            ON X.EventCode = Event.Code-- Step 8: Event_mm_Guide
    SELECT * FROM Event_mm_GuideINSERT Event_mm_Guide(EventID, GuideID, IsLead)
      SELECT DISTINCT Event.EventID, Guide.GuideID, 1 
        FROM CHA1_Schedule...Event X
          JOIN Guide
            ON X.[Lead Guide] = Guide.FirstName + ' ' + Guide.LastName
          JOIN Event
            ON X.EventCode = Event.Code
    -- Step 9: Tour_mm_Guide
    INSERT Tour_mm_Guide (TourID, GuideID, QualDate)
      SELECT DISTINCT Tour.TourID, Event_mm_Guide.GuideID, '1/1/2000'
        FROM Tour
          JOIN Event
            ON Event.TourID = Tour.TourID
          JOIN Event_mm_Guide
            ON Event.EventID = Event_mm_Guide.EventIDSELECT * FROM Tour_mm_GuideSelect * from vTableRowCount
      

  5.   

    其实楼主的代码很详细的。
    出错地方就在于 
    Execute sp_addlinkedserver 
      'CHA1_Schedule', 
      'Excel', 
      'Microsoft.Jet.OLEDB.4.0', 
      'C:\SQLServerBible\CHA1_Schedule.xls',  
      NULL, 
      'Excel 5.0' 根据提示:显示该EXCEL表正在使用,可以观察下,系统有没有该进程。
              语句上是否有问题,
    sp_addlinkedserver [ @server= ] 'server' [ , [ @srvproduct= ] 'product_name' ] 
         [ , [ @provider= ] 'provider_name' ]
         [ , [ @datasrc= ] 'data_source' ] 
         [ , [ @location= ] 'location' ] 
         [ , [ @provstr= ] 'provider_string' ] 
         [ , [ @catalog= ] 'catalog' ] 应该问题就可以解决了!