باستخدام MSBuild لإنشاء قاعدة بيانات SQL
-
22-09-2019 - |
سؤال
هل هناك برنامج تعليمي جيد لإنشاء قاعدة بيانات باستخدام msbuild?
Jean Paul Boodhoo يقوم باستخدام Nant In هذه بريد. يقوم بتعيين خصائص لاستخدامها في ملف بناء nant
<properties>
<property name="sqlToolsFolder" value="C:\Program Files\Microsoft SQL Server\90\Tools\Binn"/>
<property name="osql.ConnectionString" value="-E"/>
<property name="initial.catalog" value="Northwind"/>
<property name="config.ConnectionString" value="data source=(local);Integrated Security=SSPI;Initial Catalog=${initial.catalog}"/>
<property name="database.path" value="C:\root\development\databases" />
<property name="osql.exe" value="${sqlToolsFolder}\osql.exe" />
</properties>
ثم يمكن إنشاء قاعدة البيانات باستخدام سطر الأوامر مثله..
c:\> build builddb
لقد قمت بتثبيت حزمة ملحق MSBuild لكن لم أتمكن من العثور على مكان إدخال سلسلة الاتصال للاتصال بقاعدة البيانات
شكرًا
تم الحل
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="constants.proj"/>
<Target Name="QueryDb">
<PropertyGroup>
<_Command>-Q "SELECT * FROM Users"</_Command>
<_Command2>-i test.sql</_Command2>
</PropertyGroup>
<Exec Command="$(sqlcmd) $(_Command)" /><!---->
</Target>
</Project>
و Constants.Proj يبدو هكذا
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<sqlToolsFolder>C:\Program Files\Microsoft SQL Server\90\Tools\Binn</sqlToolsFolder>
<initialCatalog>NorthwindTest</initialCatalog>
<serverInstance>(local)\SQLEXPRESS</serverInstance>
<configConnectionString>data source=$(serverInstance);Integrated Security=SSPI;Initial Catalog=$(initialCatalog)</configConnectionString>
<osqlExe>"$(sqlToolsFolder)\osql.exe"</osqlExe>
<sqlcmd>$(osqlExe) -U someuser -P somepassword -d $(initialCatalog) -S (local)\SQLEXPRESS</sqlcmd>
<!--<sqlcmd>$(osqlExe) -E -d $(initialCatalog) -S (local)\SQLEXPRESS</sqlcmd>-->
</PropertyGroup>
</Project>
ثم عند تشغيل موجه الأوامر VS
msbuild db.targets /t: QueryDB
الأمر الذي يتم تشغيله هو "C: Program Files Microsoft SQL Server 90 tools binn osql.exe" -u someuser -p somepassword -d northwindtest -s (local) sqlexpress -Q "select * from userprofile "
شكرا لك يا سيد
المحلول
إذا كنت مرتاحًا للنهج المتبع في هذا المنشور ، فيمكنك ببساطة متابعة ذلك من MSBuild أيضًا. على سبيل المثال ، قم بإنشاء ملف Constants.Proj (يمكنك تسميته ما تريد) و db.targets (قم أيضًا بتسمية ما تريد). وبعد ذلك سيحتوي هؤلاء على شيء مثل:
الثوابت
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<sqlToolsFolder>C:\Program Files\Microsoft SQL Server\90\Tools\Binn</sqlToolsFolder>
<osqlConnectionString>-E</osqlConnectionString>
<initialCatalog>Northwind</initialCatalog>
<configConnectionString>data source=(local);Integrated Security=SSPI;Initial Catalog=$(initialCatalog)</configConnectionString>
<databasePath>C:\root\development\databases</databasePath>
<osqlExe>$(sqlToolsFolder)\osql.exe</osqlExe>
</PropertyGroup>
</Project>
ثم في db.targets ، يمكنك فقط إنشاء سطر الأوامر مع تلك الخصائص واستخدام exec مهمة تنفيذها ، مثل ما يلي.
DB.Targets
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="constants.targets"/>
<Target Name="CreateDb">
<PropertyGroup>
<_Command> ... FILL IN HERE ... </_Command>
</PropertyGroup>
<Exec Command="$(_Command)" />
</Target>
</Project>
نصائح أخرى
تحتوي حزمة تمديد MSBuild على مهام (وهي MSBuild.ExtensionPack.Sql2005
و MSBuild.ExtensionPack.Sql2008
) لمعالجة قواعد بيانات SQL والمثال التالي:
<!-- Create a database -->
<MSBuild.ExtensionPack.Sql2005.Database TaskAction="Create" DatabaseItem="ADatabase2" MachineName="MyServer\SQL2005Instance"/>
<!-- Create the database again, using Force to delete the existing database -->
<MSBuild.ExtensionPack.Sql2005.Database TaskAction="Create" DatabaseItem="ADatabase2" Force="true" Collation="Latin1_General_CI_AI" MachineName="MyServer\SQL2005Instance"/>