App-V Server publishing might fail when you apply user configuration files with SQL Server 2016 or later

Applies to: Windows Server 2019, all editionsWindows Server 2016Windows Server 2012 R2

Summary


Virtual application packages contain a manifest that provides all the core information and default settings for the package. If you want to adjust these defaults for a particular user or group, you can create and edit the User Configuration file (UserConfig). The UserConfig file allows you to specify or modify custom settings for a package. These settings will be applied for a specific user when the package is deployed to a computer running the App-V client.

Symptoms


Publishing of virtual application packages that have UserConfig files through App-V Management Console might fail due to a change in how SQL Server 2016 and later handle data types.  For more information on that change, see KB4010261.  Packages that have this issue will include seven digits for miliseconds in the Timestamp for example, "2019-12-30T14:41:57.7433333".  Packages that will likely be published sucessfully have two digits for  milisecond in the Timestamp, for exmaple "2019-12-30T14:41:50.58".

If you encounter this issue, you may recieve the following error in verbose logging:

5756 [7]14D4.4320::12/10/19-08:28:34.9973489 [Microsoft.Windows.AppMan.AppV] LOGLEVEL=1, MESSAGE=Catalog: Failed to set the last modification time on policy file 'C:\Users\sgern\AppData\Roaming\Microsoft\AppV\Client\Catalog\Packages\{1D45F06B-874D-4A85-86EF-2330B430E47D}\{DB5DE6F6-15E8-4932-A7CF-2DA12EA5B068}\DynamicConfiguration.xml. Error code: 0x0FD0A725-00000057, FUNCTION=AppV::Client::Catalog::DocumentStoreImpl::SavePolicyDocumentToFile, LINENO=1078, UTCReplace_AppSessionGuid=true

The Error 0x0FD0A725-00000057 is coming back from Windows and means “Wrong Parameter”

Workaround


To mitigate this issue, you might need to do one of the following:

  • Use PowerShell to publish the package.

  • Change the Compatibility Level of the Database to something lower than 130.

  • Change the Datatype of the column used for the timestamp.

An example script to change the datatype of the column used for the timestampe Can be found below.  Note You will need to adjust the DB name in the script for your enviornment. Important It is recomended you make a backup of your DB before you run any scripts.

USE  AppVManagementGOALTER TABLE dbo.PackageEntitlements ALTER column UserConfigurationTimestamp datetime2(3)GOALTER TABLE dbo.PackageVersions ALTER column TimeAdded datetime2(3)GOALTER TABLE dbo.PackageVersions ALTER column TimeChanged datetime2(3)GOALTER TABLE dbo.PackageVersions ALTER column TimeEnabled datetime2(3)GOALTER TABLE dbo.PublishingServers ALTER column LastPublishingAttempt datetime2(3)GO


Note You will not encounter this issue if you publish your virtual application packages through PowerShell.