Giter Site home page Giter Site logo

drbarnabus / dactools Goto Github PK

View Code? Open in Web Editor NEW
7.0 3.0 1.0 463 KB

A Helpful tool that can be used to deploy dacpac files to SQL Server. This tool has the ability to deploy a dacpac to multiple databases simultaniously.

License: MIT License

C# 100.00%
dacpac microsoft-sql-server sqlpackage sql database t-sql schema multi-tenant dotnet-core dotnet

dactools's Introduction

DacTools

DacTools is a tool that can be used to deploy DacPac files to Microsoft SQL Server. This tool expands upon DacFx by providing the ability to run multiple deployments to multiple databases simultaneously in parallel.

It was originally designed for use in Multi-Tenant scenarios where you may have a database per Customer (or Tenant) but you want to use a sqlproj to keep the schema of those databases in line.

Stable (main) Preview & Beta (develop)
Docs Docs Docs
GitHub Release GitHub Release
Build Build Status main Build Status develop
Coverage Codecov main Codecov develop
DacTools.Deployment.Tool NuGet NuGet
DacTools.Deployment.Core NuGet NuGet

Compatibility

DacTools.Deployment works on Windows, Linux and Mac. It is supported on .NET 6, .NET 5 and .NET Core 3.1

DacTools.Deployment currently makes use of Microsoft.SqlServer.DACFx v150.x and as such it can target SQL Server 2008, 2008R2, 2012, 2014, 2016, 2017, 2019 and Microsoft Azure SQL Databases.

Quick Links

License

Licensed under MIT

Copyright (c) 2022 DrBarnabus

Notice: This isn't an official Microsoft repository or tool, this is an open source project designed to assist in deploying dacpac Data-tier Applications.

dactools's People

Contributors

cs-danielw avatar drbarnabus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

cs-danielw

dactools's Issues

.NET Core 3.1 LTS Support and Build

🚀 Feature Request

Relevant Package(s)

This request is for the DacTools.Deployment Package.

Description

The package should drop support for .NET Core 3.0 and instead support .NET Core 3.1 LTS.

Proposed Solution

Change the TFM for .NET Core 3.0 to .NET Core 3.1.

Finish Build Server Integration

🚀 Feature Request

Relevant Package(s)

This feature request is for the DacTools.Deployment package(s).

Description

At present there is a way to detect if we are running on Azure Pipelines and generate specific log messages that will trigger a response from the build server such as reporting progress or an error.

The integration into the first build server Azure Pipelines needs to be finished by hooking up the methods in IBuildServer in the appropriate places.

This when completed, should also give the user the ability to disable and enable certain functionality on demand as well as outright disabling build server recognition if they don't want to use it.

Proposed Solution

Most of the solution is already in place, the methods that have already been created need to be called in the appropriate places and the configuration options need to be added to consider this complete.

File Logging

🚀 Feature Request

Relevant Package

This feature request is for the DacTools.Deployment.Core package.

Description

We should extend the current logging with the ability to log to a file.

Describe the Solution you'd like

Extend the current logging interface with a file logger. The configuration for this will come from the command line, if the log path parameter is provided then it will log to that file.

Refactor and Improve IAsyncTask

We should rework IAsyncTask to use a more generic interface that includes the ProgressUpdateDelegate. At the same time, this can be refactored to have a more generic interface that can be used to get more information during the progress updates.

There should also be a, possibly generic, AsyncTaskFactory so that we can properly use dependency injection in the IAsyncTask implementations. This would involve creating a Create method to create a new instance of a task.

Help Application Name is Wrong

🐞 Bug Report

Affected Package

The issue is caused by the DacTools.Deployment.Tool package.

Is this a regression?

No

Description

When the program is packaged as a dotnet global tool the application name shown in the help text is for the self contained application.

🔬 Minimal Reproduction Steps

Run the DacTools.Deployment.Tool global tool with one of the help switches and look at the help text.

🔥 Exception or Error Message

N/A

🌍 Your Environment

DacTools Version:

0.1.0

.NET Core or Framework Version:

N/A

Anything else relevant?

N/A

Customizable DacDeployOptions

🚀 Feature Request

Relevant Package

This feature request is for the DacTools.Deployment.Core package.

Description

At present the DacDeployOptions passed to DacFx are hard coded. It would be a great improvement to add a way for configuring these so users can specify the settings themselves.

Describe the Solution you'd like

At present, I think specifying either a JSON or YAML file via a command line parameter would be a nice way to configure the options. But due to the way they appear to work internally in DacFx it would likely be a requirement for us to have our own DacDeployOptions which gets translated into the DacFx type when the file is loaded.

Documentation

At present no documentation exists for the project.

To resolve this, I am hoping to use readthedocs.com to generate the documentation and then link to it in the README.md file.

Refactor DatabaseListGenerators

Refactor DatabaseListGenerators to use a single generic interface, as a significant portion of their code is generic we can then reuse it to reduce the amount of code reuse in the application.

Making both use a generic interface will mean adding some kind of method to detect if the generator is the current active generator; Blacklist or Whitelist. Although it would make it easier in the future if an ability was added to make your own Database List Generator extending IDatabaseListGenerator.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.