{"id":152,"date":"2026-10-12T14:21:20","date_gmt":"2026-10-12T14:21:20","guid":{"rendered":"http:\/\/www.scmgalaxy.com\/tutorials\/2009\/10\/06\/how-to-copy-vss-project-from-one-vss-database-to-another-one-without-loosing-history\/"},"modified":"2026-10-12T14:21:20","modified_gmt":"2026-10-12T14:21:20","slug":"how-to-copy-vss-project-from-one-vss-database-to-another-one-without-loosing-history","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/how-to-copy-vss-project-from-one-vss-database-to-another-one-without-loosing-history\/","title":{"rendered":"How to Move a Visual SourceSafe Project to Another Database Without Losing History"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Moving projects between Visual SourceSafe (VSS) databases without losing version history is possible when you use VSS archive and restore workflows correctly. This guide is for VSS administrators who need a safe, repeatable migration path and want clear steps for both GUI and command-line methods.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Originally published on 2009-10-06; fully revised and updated.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4182\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2009\/10\/vss-project.png\" alt=\"Visual SourceSafe project archive and restore\" width=\"600\" height=\"400\" srcset=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2009\/10\/vss-project.png 600w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2009\/10\/vss-project-300x200.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What this procedure solves<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Use this approach when you need to move one or more VSS projects to another database and keep their history intact.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Copy a VSS project from one database to another without losing history<\/li><li>Move VSS projects to a new server or location<\/li><li>Transfer projects across databases while preserving change history<\/li><li>Perform a migration with either interactive or scriptable tooling<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Applies to, prerequisites, and constraints<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">According to the original guidance, this process applies to <strong>Microsoft Visual SourceSafe 5.0 Standard Edition<\/strong> and <strong>Microsoft Visual SourceSafe 6.0 Standard Edition<\/strong>, and requires VSS 5.0 or later.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Use <strong>SSARC<\/strong> and <strong>SSRESTOR<\/strong> (included with VSS) if you want command-line control.<\/li><li>You need <strong>SourceSafe Admin privileges<\/strong>.<\/li><li>For cross-database restore, the archive must include the <strong>latest versions<\/strong> of files in the project.<\/li><li>After restore, physical file renaming may require reconnecting or rebinding tools integrated with VSS.<\/li><li>Before archive\/restore, ensure no one is using the database and that maintenance jobs (such as ANALYZE) are not running during the operation.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Choose a migration method<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Method<\/th><th>Tooling<\/th><th>Best for<\/th><th>Trade-offs<\/th><\/tr><\/thead><tbody><tr><td>Administrator GUI<\/td><td>Archive Projects \/ Restore Projects wizard<\/td><td>One-off or occasional migrations<\/td><td>Simple to follow, but manual and less automatable<\/td><\/tr><tr><td>Command line<\/td><td>SSARC and SSRESTOR<\/td><td>Repeatable operations, logging, scheduled tasks<\/td><td>Requires switch accuracy and careful credential handling<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Archive and restore workflow<\/h2>\n\n\n\n<pre class=\"mermaid\">\nflowchart TD\n    A[Plan migration window] --> B[Confirm admin access]\n    B --> C[Ensure no active users]\n    C --> D[Archive source project]\n    D --> E[Copy SSA archive file]\n    E --> F[Open target database]\n    F --> G[Restore project]\n    G --> H[Validate history and labels]\n    H --> I[Reconnect integrated projects]\n    I --> J[Take fresh backup]\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Method 1: Use Visual SourceSafe Administrator<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Archive from the source database<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>Ensure no users are connected, and pause operations such as ANALYZE during the archive.<\/li><li>Open the source database in Visual SourceSafe Administrator.<\/li><li>Go to the Archive menu and select <strong>Archive Projects<\/strong>.<\/li><li>Select the project(s) to archive.<\/li><li>Choose archive options and output file location.<\/li><li>Set version scope for archived data.<\/li><li>Add a comment describing the archive.<\/li><li>Finish the wizard to generate the <strong>.ssa<\/strong> archive file.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Restore into the target database<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>Ensure no users are connected to the target database, and pause ANALYZE during restore.<\/li><li>In Visual SourceSafe Administrator, open the target database.<\/li><li>Go to the Archive menu and select <strong>Restore Projects<\/strong>.<\/li><li>Select the archive file to restore from.<\/li><li>Choose which items to restore.<\/li><li>Set restore options and destination as needed.<\/li><li>Add a comment documenting the restore.<\/li><li>Finish, then verify that restored items are in the intended location.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Method 2: Use SSARC and SSRESTOR from the command line<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The following examples are preserved from the original guidance and are useful as templates. Validate switch behavior in your VSS version before running in production.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">SSARC examples<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript language-bash\">SSARC -d- -yadmin,password archive.ssa $\/\nSSARC -d- <span class=\"hljs-string\">\"-vlProduction Release\"<\/span> -yadmin,password -olog.txt archive.ssa $\/Test\nSSARC -d -x -yadmin,password archive.ssa <span class=\"hljs-string\">\"$\/Project Global Domination\"<\/span> $\/OtherProject\nSSARC -i -yadmin,password -olog.txt <span class=\"hljs-string\">\"-cArchive Everything\"<\/span> archive.ssa $\/<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ul class=\"wp-block-list\"><li>Archive the full database while leaving database contents unchanged.<\/li><li>Archive project data since a label and write a log file.<\/li><li>Archive multiple projects with deletion-related options from the original example set.<\/li><li>Run non-interactively with logging and an archive comment (useful for scheduled tasks).<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">SSRESTOR examples<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript language-bash\">SSRESTOR -la -yadmin,password archive.ssa $\/\nSSRESTOR <span class=\"hljs-string\">\"-p$\/Test 2\"<\/span> -sD:\\newfolder\\ -yadmin,password backup.ssa $\/Test<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ul class=\"wp-block-list\"><li>List archived contents before restoring.<\/li><li>Restore a project from an archive to a different project path\/location in another database context.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Post-restore validation checklist<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Confirm project tree and folder structure in the target database.<\/li><li>Open file history for multiple files and verify expected revisions.<\/li><li>Verify labels and comments that should have been preserved.<\/li><li>Check for duplicate-name conflicts or skipped items.<\/li><li>Reconnect external integrations that depended on old physical file mappings.<\/li><li>Create a fresh backup of the target database after successful validation.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Common pitfalls and best practices<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Back up before every archive or restore<\/strong>, and keep copies in multiple locations.<\/li><li><strong>Test restore procedures<\/strong> on a non-production database before touching live data.<\/li><li><strong>Avoid permanent deletes<\/strong> unless you have verified restoreability.<\/li><li><strong>Do not run migrations while users are active<\/strong> in the same database.<\/li><li><strong>Protect credentials<\/strong>; avoid exposing admin passwords in shared scripts or logs.<\/li><li><strong>Document archive comments and logs<\/strong> so changes are auditable later.<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>This guide explains how to migrate Visual SourceSafe projects between databases while preserving history using either the Administrator wizard or SSARC\/SSRESTOR. It also includes prerequisites, command examples, and a validation checklist to reduce migration risk.<\/p>\n","protected":false},"author":1,"featured_media":4182,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[2],"tags":[2520,3635,1122,2624,3113,1806,3631,3636,938,213,3237,3634,3633,368,3632,3245,3637,3638,3236,3630],"class_list":["post-152","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorised","tag-copy","tag-copy-from-vss-database-to-another-with-history","tag-guide","tag-history","tag-how-to","tag-instruction","tag-loss","tag-project-copy-one-vss-database-to-another-one-with-history","tag-reference","tag-tutorial","tag-visual-source-safe","tag-visual-source-safe-guide","tag-visual-source-safe-tutorial","tag-vss","tag-vss-best-practices","tag-vss-database","tag-vss-database-best-practices","tag-vss-database-copy-with-history","tag-vss-project","tag-without"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/152","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=152"}],"version-history":[{"count":3,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/152\/revisions"}],"predecessor-version":[{"id":79000,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/152\/revisions\/79000"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media\/4182"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=152"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=152"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=152"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}