254
votes

Assuming we have a database project called MyDatabase then a file called MyDatabase.jfm appears in the root of the project directory.

  • It is exclusively locked while the project is open in Visual Studio
  • It is a binary file
  • It has only started appearing recently (past couple of days)

I have done a Google search, which has not offered any insight. There are some references to some old software, but most of the results are spam/trojanware. I have also looked in SO, but that has not produced any results either.

Does anyone know what it is and why it's there?

The plan is to add it to the gitignore file for Visual Studio, but I need to know what it is first to submit the PR...

UPDATE

This is now breaking the Team Explorer Changes view. There are no changes being shown with the following from the Output window:

Screenshot of the error from the output tab

As such I will be adding the file to the .gitignore file and submitting the PR. It would be good to eventually learn what this file is and where it came from...

2
I've updated Windows 10 with anniversary update and I've now this file being generated. - Fabian Vilers
Adding *.jfm to the .gitignore file seems to fix the issue. - Fabian Vilers
I have to joke: Did you try uninstalling and resinstalling? - pookie
+1 Had the issue where no changes at all were showing. Deleting the jfm file from source control via gitbash and adding it to gitignore file fixed the issue after much struggle. Had to close Visual Studio for the git "git rm -rf" to work.. What a nightmare! - Noobie3001
@Noobie3001 worked for me too. Add *.jfm to .gitignore, thent delete .jfm from remote git repo, discard local changes and sync with remote. Issue fixed. - Ivan G.

2 Answers

197
votes

This is an issue caused by the ESENT engine relied on by SQL Projects adding in a new file. This is a new feature in Windows 10 Anniversary Edition to avoid data loss, but the fact SQL Projects store the .dbmdl cache file under the project root means this locked file is added to the Git source control.

Notes:

  • A pull request to fix this in GitIgnore has been accepted and the Visual Studio team is working to include this in future updates. This will ensure that for new projects the .gitignore file includes .jfm and the problem will not occur
  • The core SSDT team is working to provide a solution to this in a future update, but for now the best solution is to manually add as discussed in the comments.

Disclosure: I work on the SSDT team for Microsoft.

82
votes

The takeaway from others is...

  • Add *.jfm to your .gitignore

(In powershell, Add-Content .\.gitignore *.jfm)

  • You may need to run git rm --cached *.jfm