使用Hekaton在内存文件流文件夹中附加MS Sql Server DB

时间:2016-08-09 16:21:55

标签: sql-server

尝试将数据库(来自2014年)附加到我的2016实例。问题是DB还包含Hekaton InMemory功能。我已经复制了所有内容(数据文件,日志文件和Hekaton Filestream文件夹)并确认服务帐户可以完全访问uqestion中的文件夹(非Hekaton数据库附加就好了)但是我不能为我的生活似乎说服允许我使用Hekaton文件流文件夹附加数据库的SQL。

实例完全启用了文件流,我可以创建一个带有Hekaton文件流的数据库,但是附加似乎是一个不同的故事。

这是我的示例代码

CREATE TRIGGER [dbo].[CountryDivisions_Audit]
    ON [dbo].[CountryDivisions]
    AFTER INSERT, UPDATE
    AS
    BEGIN
        SET NoCount ON

        -- prevent recursion
        If TRIGGER_NESTLEVEL() > 1 RETURN

        UPDATE cdan
            SET
                [LastUpdatedBy] = USER_NAME()
                , [LastUpdatedDateTime] = GETUTCDATE()
            FROM
                [dbo].[CountryDivisions] AS cdan
                JOIN inserted AS i
                    LEFT JOIN deleted AS d
                        ON d.[CountryDivisionID] = i.[CountryDivisionID]
                    ON i.[CountryDivisionID] = cdan.[CountryDivisionID]
            WHERE
                -- only update records that have actually been updated.
                ISNULL(i.[CountryDivisionID], -1) <> ISNULL(d.[CountryDivisionID], -1)
                OR ISNULL(i.[ParentDivisionID], -1) <> ISNULL(d.[ParentDivisionID], -1)
                OR ISNULL(i.[DivisionCodeISO], '') <> ISNULL(d.[DivisionCodeISO], '')
                OR ISNULL(i.[DivisionCodeShort], '') <> ISNULL(d.[DivisionCodeShort], '')
                OR ISNULL(i.[DivisionType], '') <> ISNULL(d.[DivisionType], '')
                OR (
                    ISNULL(i.LastUpdatedBy, '') <> ISNULL(d.LastUpdatedBy, '')
                    AND UPDATE(LastUpdatedBy)
                )
                OR (
                    ISNULL(i.LastUpdatedDateTime, '1900-01-01') <> ISNULL(d.LastUpdatedDateTime, '1900-01-01')
                    AND UPDATE(LastUpdatedDateTime)
                )
    END

这是我得到的错误:

消息33402,级别16,状态1,行6 指定了无效的目录名称'F:\ MSSQL13.SS \ MSSQL \ UserData \ MyDb-Hekaton'。使用有效的Windows目录名称。

GUI没有任何帮助,因为当文件夹位于不同的位置时,它没有帮助附加Hekton文件流。我复制的文件流文件夹的权限允许服务帐户和NT Service \ MSSQL $$ SS用户完全控制。

如果我取消附加的 With Filestream 部分,那么Sql会尝试从原始位置打开它。

该文件夹已被三重确认为正确(从Windows资源管理器中复制并粘贴到\等),我也尝试从传递的文件夹中删除 \ MyDb-Hekaton 并添加和删除关闭\符号。不管我做了什么,Sql都很冒犯。

(注意:2014年到2016年的方面不是问题 - 如果我移动Hekaton文件夹,如果我在同一个实例上分离并重新连接一个新创建的Hekaton数据库,我也会得到同样的错误)。

1 个答案:

答案 0 :(得分:1)

该文件夹本身就是文件组。这样的事情在我的案例中有用:

Create Database MyDb On
    ( FileName = 'F:\MSSQL13.SS\MSSQL\UserData\MyDb.mdf' ),
    ( FileName = 'F:\MSSQL13.SS\MSSQL\UserLogs\MyDb_log.ldf' )
    ( FileName = 'F:\MSSQL13.SS\MSSQL\UserData\MyDb-Hekaton' )
For Attach