Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
SQL-adatbázis a Microsoft Fabricben
Az SQL-projektek adatbázis-hivatkozásai lehetővé teszik a projektben nem szereplő objektumok beépítését egy másik projekthez, .dacpac fájlhoz vagy közzétett NuGet-csomaghoz csatolással. A projekthez hozzáadott adatbázis-objektumok lehetnek ugyanahhoz az adatbázishoz, egy másik adatbázishoz ugyanazon a kiszolgálón, vagy egy másik kiszolgálón található adatbázishoz. A SQL Server fejlesztéshez használja az adatbázis-hivatkozásokat egy másik, ugyanazon a kiszolgálón lévő adatbázisra háromrészes elnevezéshez, vagy egy másik kiszolgálón lévő adatbázisra mutató hivatkozásra az adatbázisközi lekérdezésekhez. Az olyan adatbázisok esetében, amelyekben nagy számú objektum található különböző csoportokban, az adatbázis-hivatkozások segítségével kisebb, kezelhetőbb projektekre bonthatja az adatbázisokat. A kisebb projektméret javíthatja a teljesítményt, és csökkentheti a projekt létrehozásához szükséges időt az iteratív helyi fejlesztés során.
Note
Projekthivatkozások és NuGet-csomaghivatkozások használata adatbázis-hivatkozásokhoz az új fejlesztésben. Az eredeti SQL-projektek nem támogatják a NuGet-csomagokra való hivatkozásokat.
SQL-projektfájl mintája és szintaxisa
A C#-projektekhez hasonlóan egy projektben a .sqlproj fájl bejegyzésein keresztül adatbázis-hivatkozásokat vehet fel. Az SQLCMD szintaxissal hivatkozhat az adatbázis nevére az SQL-projektobjektumokban. Ha egy adatbázis-hivatkozás egy másik adatbázisra mutat ugyanazon a kiszolgálón, adjon hozzá egy <DatabaseSqlCmdVariable> elemet a projekthivatkozáshoz. Ha egy adatbázis-hivatkozás egy másik kiszolgálón lévő másik adatbázisra mutat, a projekthivatkozásban is szerepeljen egy <ServerSqlCmdVariable> elem. Az ugyanarra az adatbázisra mutató adatbázis-hivatkozások nem tartalmaznak <ServerSqlCmdVariable> elemeket vagy <DatabaseSqlCmdVariable> elemeket.
Az adatbázis nevének megadásához használja a projektfájlban elnevezett SQLCMD-változókat, ha egy adott adatbázis-hivatkozásra szeretne hivatkozni az SQL-szkriptekben. A következő SQL-szkript például az adatbázisban lévő Warehouse táblára hivatkozik:
SELECT ProductId,
StorageLocation,
BinNumber
FROM [$(Warehouse)].[Production].[ProductInventory];
A projektfájl tartalmaz egy, a $(Warehouse) SQLCMD változónak megfelelő adatbázis-hivatkozást, és tartalmazza a(z) <DatabaseSqlCmdVariable>Warehouse</DatabaseSqlCmdVariable> elemet.
Azonos adatbázison belüli háromrészes névmegadás
Ha egy SQL-projekt egy objektuma egy másik objektumra hivatkozik ugyanabban az adatbázisban, akkor sem szükséges háromrészes elnevezés, még akkor sem, ha az objektumokat adatbázis-hivatkozás tartalmazza. Az SQL-projektek azonban tartalmaznak egy automatikus SQLCMD-változót az adatbázisnévhez, amelyet sql-szkriptekben használhat a projekt adatbázisára való hivatkozáshoz a név megadása nélkül. Ha háromrészes elnevezésre van szükség, használja $(DatabaseName) az SQL-szkriptekben az adatbázisra való hivatkozáshoz. A következő SQL-szkript például egy táblára hivatkozik a projekt adatbázisában:
UPDATE [$(DatabaseName)].[SalesLT].[Customer]
SET [SalesPerson] = 'John Doe',
[ModifiedDate] = GETDATE()
WHERE [CustomerId] = @CustomerId;
Adatbázis literális értékei
Bizonyos esetekben előfordulhat, hogy az SQL-objektumok adatbázis-hivatkozásából konstans (nem változó) értéket kell használnia az adatbázis nevére. A fájl konfigurálható .sqlproj úgy, hogy sqlCMD-változó helyett egy adatbázisnév literális értékét adja meg. A literális érték megadásához használt elem a következő <DatabaseLiteralValue>: . Ha ezt az elemet használja, ne használja az <DatabaseSqlCmdVariable> elemet. Az elemen <DatabaseLiteralValue> belül meg kell adnia az adatbázis nevének literális értékét. Egy SQL-szkriptben például egy adatbázis-referenciát <DatabaseVariableLiteralValue>WarehouseDB</DatabaseVariableLiteralValue> használnak az alábbiak szerint:
SELECT ProductId,
StorageLocation,
BinNumber
FROM [WarehouseDB].[Production].[ProductInventory];
Projekthivatkozások
Ebben a példában egy projekthivatkozást ad hozzá egy olyan SQL-projekthez AdventureWorksSalesLT.sqlproj , amely ugyanahhoz az adatbázishoz tartozik.
<ItemGroup>
<ProjectReference Include="..\AdventureWorks\AdventureWorksSalesLT.sqlproj">
<Name>AdventureWorksSalesLT</Name>
<Project>{d703fc7a-bc47-4aef-9dc5-cf01094ddb37}</Project>
<Private>True</Private>
<SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
</ProjectReference>
</ItemGroup>
Dacpac-csomaghivatkozások
További információ az SQL-projektek csomaghivatkozásairól: SQL-projektek csomaghivatkozásai.
Az alábbi példa a 2022-SQL Server rendszeradatbázisára mutató csomaghivatkozástmaster mutatja be:
<ItemGroup>
<PackageReference Include="Microsoft.SqlServer.Dacpacs.Master" Version="160.2.1" />
</ItemGroup>
Dacpac-artifakt hivatkozások
Ne használjon közvetlen hivatkozásokat egy .dacpac összetevőfájlra az SDK-stílusú projektek új fejlesztéséhez. Ehelyett használjon NuGet-csomaghivatkozásokat.
Az eredeti SQL-projektekben a .sqlproj fájlban egy <ArtifactReference> elem használatával adhatja meg a .dacpac fájlhivatkozásokat. Az alábbi példa egy .dacpac összetevőre mutató hivatkozást mutat be egy .dacpac másik projektben lévő fájlra ugyanazon a kiszolgálón:
<ItemGroup>
<ArtifactReference Include="..\AdventureWorks\Warehouse\bin\Release\Warehouse.dacpac">
<HintPath>..\AdventureWorks\Warehouse\bin\Release\Warehouse.dacpac</HintPath>
<SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
<DatabaseSqlCmdVariable>Warehouse</DatabaseSqlCmdVariable>
</ArtifactReference>
</ItemGroup>
Projekthivatkozások hozzáadása és használata
Projekthivatkozás hozzáadása
Ha projekthivatkozást szeretne hozzáadni egy SQL-projekthez a Visual Studióban, kattintson a jobb gombbal a Projekt alatti Hivatkozások csomópontra a Megoldáskezelőben , és válassza az Adatbázis-referencia hozzáadása lehetőséget.
Az Adatbázis-referenciák hozzáadása párbeszédpanel a következőre mutató hivatkozás hozzáadásának lehetőségeit mutatja be:
- SQL-projekt ugyanabból a megoldásból
- rendszeradatbázis (a Visual Studióba automatikusan belefoglalt fájlokból
.dacpac) - bármely adatréteg-alkalmazásfájl a helyi fájlrendszerben (
.dacpac)
A párbeszédpanel egy legördülő listát is tartalmaz, amely a következő referenciahelyek közül választható ki:
- ugyanaz az adatbázis
- eltérő adatbázis, ugyanaz a kiszolgáló
- különböző adatbázis, eltérő kiszolgáló
Ha projekthivatkozást szeretne hozzáadni egy SQL-projekthez, adjon hozzá egy <ItemGroup> elemet a .sqlproj fájlhoz, amely minden adatbázis-hivatkozáshoz megfelelő hivatkozási elemet biztosít. A következő projekthivatkozás például hozzáadódik egy SQL-projekthez, hogy egy WorldWideImporters másik kiszolgálón lévő másik adatbázisban lévő projektre hivatkozzon:
<ItemGroup>
<ProjectReference Include="..\Contoso\WorldWideImporters.sqlproj">
<Name>WorldWideImporters</Name>
<Project>{d703fc7a-bc47-4aef-9dc5-cf01094ddb37}</Project>
<SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
<ServerSqlCmdVariable>WWIServer</ServerSqlCmdVariable>
<DatabaseSqlCmdVariable>WorldWideImporters</DatabaseSqlCmdVariable>
</ProjectReference>
</ItemGroup>
A projekthivatkozás az SQL-projekt mintanézet-definíciójában használatos:
CREATE VIEW dbo.WorldWide_Products
AS
SELECT ProductID, ProductName, SupplierID
FROM [$(WWIServer)].[$(WorldWideImporters)].[Purchasing].[Suppliers]
Ha adatbázis-hivatkozást szeretne hozzáadni egy SQL-projekthez az SQL Database Projects bővítményben, kattintson a jobb gombbal az Adatbázis-hivatkozások csomópontra a projekt alatt az Adatbázisprojektek nézetben, és válassza az Adatbázis-referencia hozzáadása lehetőséget.
A rendelkezésre álló referenciatípusok a következők:
- rendszeradatbázis
- adatrétegű alkalmazás (
.dacpac) - közzétett adatréteg-alkalmazás (
.nupkg) - projekt
A bővítmény a következő referenciahelyek közül való kiválasztást is kéri:
- ugyanaz az adatbázis
- eltérő adatbázis, ugyanaz a kiszolgáló
- különböző adatbázis, eltérő kiszolgáló
Ha projekthivatkozást szeretne hozzáadni egy SQL-projekthez, adjon hozzá egy <ItemGroup> elemet a .sqlproj fájlhoz, amely minden adatbázis-hivatkozáshoz megfelelő hivatkozási elemet biztosít. A következő projekthivatkozás például hozzáadódik egy SQL-projekthez, hogy egy WorldWideImporters másik kiszolgálón lévő másik adatbázisban lévő projektre hivatkozzon:
<ItemGroup>
<ProjectReference Include="..\Contoso\WorldWideImporters.sqlproj">
<Name>WorldWideImporters</Name>
<Project>{d703fc7a-bc47-4aef-9dc5-cf01094ddb37}</Project>
<SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
<ServerSqlCmdVariable>WWIServer</ServerSqlCmdVariable>
<DatabaseSqlCmdVariable>WorldWideImporters</DatabaseSqlCmdVariable>
</ProjectReference>
</ItemGroup>
A projekthivatkozás az SQL-projekt mintanézet-definíciójában használatos:
CREATE VIEW dbo.WorldWide_Products
AS
SELECT ProductID, ProductName, SupplierID
FROM [$(WWIServer)].[$(WorldWideImporters)].[Purchasing].[Suppliers]
Ha projekthivatkozást szeretne hozzáadni egy SQL-projekthez, adjon hozzá egy <ItemGroup> elemet a .sqlproj fájlhoz, amely minden adatbázis-hivatkozáshoz megfelelő hivatkozási elemet biztosít. A következő projekthivatkozás például hozzáadódik egy SQL-projekthez, hogy egy WorldWideImporters másik kiszolgálón lévő másik adatbázisban lévő projektre hivatkozzon:
<ItemGroup>
<ProjectReference Include="..\Contoso\WorldWideImporters.sqlproj">
<Name>WorldWideImporters</Name>
<Project>{d703fc7a-bc47-4aef-9dc5-cf01094ddb37}</Project>
<SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
<ServerSqlCmdVariable>WWIServer</ServerSqlCmdVariable>
<DatabaseSqlCmdVariable>WorldWideImporters</DatabaseSqlCmdVariable>
</ProjectReference>
</ItemGroup>
A projekthivatkozás az SQL-projekt mintanézet-definíciójában használatos:
CREATE VIEW dbo.WorldWide_Products
AS
SELECT ProductID, ProductName, SupplierID
FROM [$(WWIServer)].[$(WorldWideImporters)].[Purchasing].[Suppliers]
Építés projekthivatkozások alapján
Ha adatbázis-hivatkozásokat tartalmazó SQL-projektet hoz létre, további konfigurációra lehet szükség annak biztosításához, hogy a hivatkozott objektumok elérhetők legyenek a buildelési folyamat során. Ha például egy projektet egy folyamatos integrációs (CI) folyamatban hoz létre, a buildügynök környezetét a helyi fejlesztési környezethez hasonlóan kell beállítania.
-
.dacpacAz SQL-projekt hivatkozásai megkövetelik, hogy a.dacpacbuildügynök a projektfájlban megadott relatív fájlelérési útvonalon legyen jelen. - Az SQL-projektben lévő projekthivatkozások megkövetelik, hogy a hivatkozott projekt jelen legyen az összeállítási ügynökön, ugyanazon a relatív fájlútvonalon, amely a projektfájlban meg van adva, és hogy az összeállítási ügynökön sikeresen felépíthető legyen.
- Az eredeti, Visual Studióban létrehozott SQL-projektekben létrehozott rendszeradatbázis-hivatkozások megkövetelik, hogy a buildügynökre telepítve legyen a Visual Studio.
- Az SQL-projekt NuGet-csomaghivatkozásaihoz közzé kell tenni a csomagot egy NuGet-hírcsatornában, amely a buildügynök csomagforrásaként is be van állítva.
Közzététel projekthivatkozásokkal
.dacpac Az adatbázis-hivatkozásokat tartalmazó projektből készült adatok közzététele nem igényel további lépéseket. A .dacpac fájl tartalmazza a hivatkozott objektumokat és a projektfájlban megadott SQLCMD-változókat.
Az ugyanabban az adatbázisban lévő objektumokra mutató adatbázis-hivatkozások esetében a hivatkozott projekt objektumai szerepelnek a .dacpac fájlban, de alapértelmezés szerint nem szerepelnek az üzembe helyezésben. Az objektumok üzembe helyezésbe való bevonásához használja az /p:IncludeCompositeObjects=true opciót az SqlPackage parancssori eszközében. A következő parancs például üzembe helyezi a AdventureWorks projektet azzal a /p:IncludeCompositeObjects=true beállítással, hogy az adatbázis-hivatkozásokból származó objektumokat belefoglalja az AdventureWorksbe:
sqlpackage /Action:Publish /SourceFile:AdventureWorks.dacpac /TargetConnectionString:{connection_string_here} /p:IncludeCompositeObjects=true
Ha adatbázis-hivatkozásokat .dacpac tartalmazó fájlt helyez üzembe (ugyanazon vagy más kiszolgálón), állítsa a projektfájlban megadott SQLCMD-változókat a célkörnyezet megfelelő értékeire. Állítsa be az SQLCMD-változók értékeit az üzembe helyezés során a(z) SqlPackage parancssori eszköz /v kapcsolójával. A következő parancs például a WorldWideImporters változót WorldWideImporters értékre, a WWIServer változót pedig localhost értékre állítja.
sqlpackage /Action:Publish /SourceFile:AdventureWorks.dacpac /TargetConnectionString:{connection_string_here} /v:WorldWideImporters=WorldWideImporters /v:WWIServer=localhost