TSQL Rules for Bazel
Windows | Mac | Linux |
---|---|---|
load("@rules_tsql//tsql:defs.bzl", "tsql_dacpac")
tsql_dacpac(
name = "my_db", # builds `my_db.dacpac`
srcs = glob(["my_db/**/*.sql"]),
properties = {
"ModelCollation": "1033, CI", # same effect as <ProeprtyGroup> elements in sqlproj
},
)
tsql_dacpac(
name = "consumer",
srcs = glob(["consumer/**/*.sql"]),
deps = [":my_db"], # sql files can reference [my_db].[dbo].[table_name]
)
bazel build //my_db # compiles my_db.dacpac
bazel run //my_db:my_db.deploy --server localhost # deploys my_db.dacpac to localhost.my_db
bazel run //my_db:my_db.extract --server localhost # extracts my_db to sql files on disk
- Compile a DACPAC on any platform
- No Visual Studio Build tools dependencies
- Compile Dacpacs with references to other dacpacs
- MSBuild .sqlproj feature parity
WORKSPACE
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_tsql",
sha256 = "f9e4349417a1afabe79c5408b98f5454e5ad96b0b93e6dc748d1fabc8357054a",
url = "https://github.com/samhowes/rules_tsql/releases/download/0.0.6/rules_tsql-0.0.6.tar.gz",
)
load("@rules_tsql//tsql:deps.bzl", "rules_tsql_dependencies")
rules_tsql_dependencies()
load("@rules_tsql//tsql:defs.bzl", "tsql_register_toolchains")
tsql_register_toolchains()
See //tests/examples
for more usage examples
Compilation is done using SqlBuildTask from Microsoft.Data.Tools.Schema.Tasks.Sql.dll available via the DacFx package (preview versions have the Tasks dll).