
示例工程数据库教程后端【免费下载链接】sql-server-samplesAzure Data SQL Samples - Official Microsoft GitHub Repository containing code samples for SQL Server, Azure SQL, Azure Synapse, and Azure SQL Edge项目地址https://gitcode.com/gh_mirrors/sq/sql-server-samples点击查看免费下载Master Data ServicesMDS是 SQL Server 提供的主数据管理MDM解决方案用于发现、定义和维护非事务型的主数据列表形成可持续维护、可靠的主数据清单。本指南以当前仓库 samples/features/master-data-services 目录下的 MDS 示例为绝对主体系统讲解如何通过 MDS Web Service API 自定义用户与 MDS 的交互方式——包括业务规则的增删改查与验证、实体暂存数据的处理、成员Member的 CRUD、元数据管理、模型部署、安全信息导入导出以及 SharePoint 工作流扩展。读完本文你将掌握一套完整的、可直接复用的 MDS 二次开发模式并能独立搭建基于 C# 控制台的 MDS 客户端程序。一、MDS 与主数据管理示例要解决什么问题Master Data Services 是 SQL Server 中用于主数据管理的解决方案。所谓主数据管理MDM核心目标是让组织能够发现并定义非事务型的数据列表如客户、产品、供应商、科目等并将其编译为可维护、可靠的主数据清单——即整个企业共享的唯一事实来源。主目录 README 明确指出本目录下的 MDS 示例全部是 C# 控制台应用程序它们演示了如何通过编程方式定制你和你的用户与 Master Data Services 交互的方式。也就是说这些示例不是 Web 界面操作的替代说明而是展示了在界面之外如何以代码驱动 MDS 的核心业务能力。从目录结构看示例按 API 能力划分为七个独立工程samples/features/master-data-services/ ├── business-rules/ # 业务规则 API创建、编辑、验证、排除、删除 ├── entity-based-staging/ # 实体暂存 API处理、查询、清理暂存批次 ├── master-data/ # 主数据 API成员 CRUD、层次关系、变更集 ├── metadata/ # 元数据 API模型、实体、属性、属性组 CRUD ├── model-deployment/ # 模型部署 APIModelDUtil 命令行工具 ├── security/ # 安全 API安全主体信息导出/导入 └── workflow/ # SharePoint 工作流类型扩展器每个子工程都遵循相同的结构Program.cs入口与全部示例逻辑、Reference.cs由 Visual Studio 生成的 MDS Web Service 代理类、*.csproj工程文件以及各自的 README 说明。下面先讲解所有示例共用的环境准备再逐个深入每个示例。二、通用前置准备连接 MDS Web Service除模型部署示例外其余示例都通过 WCF 客户端代理访问 MDS Web Service端点形如http://ServerName/MdsSiteName/Service/Service.svc。所有Program.cs中都有同一段关键配置// MDS service client proxy object. private static ServiceClient clientProxy; // Set the MDS URL (plus /Service/Service.svc) here. private static string mdsURL http://localhost/MDS/Service/Service.svc;例如 business-rules/Program.cs、master-data/Program.cs 中的配置完全一致。实际部署时请将主机名与站点名替换为你的 MDS 环境。2.1 服务代理的创建方式每个示例的GetClientProxy方法展示了创建 WCF 客户端代理的标准写法以 business-rules/Program.cs 为例private static ServiceClient GetClientProxy(string targetURL) { // Create an endpoint address using the URL. EndpointAddress endptAddress new EndpointAddress(targetURL); // Create and configure the WS Http binding. WSHttpBinding wsBinding new WSHttpBinding(); // Create and return the client proxy. return new ServiceClient(wsBinding, endptAddress); }其核心是以 MDS 服务 URL 构造EndpointAddress配合默认的WSHttpBindingMDS 服务契约基于 WS-* 标准实例化ServiceClient代理。所有后续 API 调用都通过该代理完成。2.2 统一错误处理OperationResult 遍历各示例还共享一套错误处理模式——HandleOperationErrors方法遍历OperationResult.Errors逐个输出错误码与描述见 business-rules/Program.csprivate static void HandleOperationErrors(OperationResult result) { string errorMessage string.Empty; if (result.Errors.Count 0) { foreach (Error anError in result.Errors) { errorMessage Operation Error: anError.Code : anError.Description \n; } // Show the error messages. Console.WriteLine(errorMessage); } }MDS 的每个 Web 方法返回中都包含OperationResult这是判断调用成败的统一入口实际开发中应像示例一样在每个调用后立即检查。2.3 生成 Reference.cs暴露 WSDL 与 Visual Studio 添加服务引用Program.cs使用的Reference.cs是通过 Visual Studio 生成的服务引用类文件用来访问 MDS Web Service API。各示例 README 一致提醒当 MDS Web Service API 发生变化时可能需要重新生成Reference.cs。生成代理类时只需临时暴露 WSDL代理生成之后便不再需要暴露 WSDL客户端程序可直接调用 API。具体步骤如下第一步启用对 WSDL 的 HTTP/HTTPS GET用文本编辑器打开 MDS 的web.config文件路径为Program Files\Microsoft SQL Server\Master Data Services\WebApplication\web.config搜索serviceMetadata标签将httpGetEnabled设为true如果使用 SSL 则设httpsGetEnabled。第二步可选启用服务异常详情以便调试搜索serviceDebug标签将includeExceptionDetailInFaults设为true。注意此选项仅用于额外调试标准已捕获的错误并不需要它。第三步在 Visual Studio 中添加服务引用打开工程后点击Add Service Reference添加服务引用在 Address地址中输入 MDS 服务 URLhttp://ServerName/MdsSiteName/service/service.svc在 Namespace命名空间框中将服务的命名空间指定为MDSTestService点击 Advanced高级按钮配置高级设置勾选Always generate message contracts始终生成消息约定将 Collection type集合类型下拉框设为System.Collections.ObjectModel.Collection点击 OK 返回添加服务引用对话框再次点击 OK 完成生成。生成的Reference.cs位于BusinessRules\Service References\MDSTestService等对应文件夹中可将其替换掉示例工程根目录下的Reference.cs各工程目录结构见 business-rules、entity-based-staging、master-data、metadata、security 各自的 README。命名空间统一为 MDSTestService 是让示例代码可直接编译的关键约定。三、业务规则 API 示例规则的完整生命周期business-rules 示例演示了如何使用 MDS API创建、编辑、验证、排除和删除业务规则其完整场景链如下系统创建一条业务规则当Code等于ABC时Name必须等于Test编辑该业务规则将条件改为Code以Test开头创建一个会触发业务规则校验失败的成员添加Code Test12、Name AA的成员执行校验Validation并获取校验问题Validation Issue信息最后排除并删除该业务规则。一个贯穿始终的核心约束是每次改变业务规则状态的操作创建、编辑、排除、删除都必须调用发布Publish操作来最终生效。从 Program.cs 的主流程可以清楚看到这一点// Create a new business rule and publish it. CreateAndPublishBR(TestModel, TestEntity, Test Rule); // Edits the business rule and publishes it. EditAndPublishBR(TestModel, TestEntity, Test Rule); // Creates a member that causes a validation issue... GetBRValidationIssue(TestModel, TestEntity, Test Rule, VERSION_1); // Excludes the business rule and publishes it. ExcludeAndPublishBR(TestModel, TestEntity, Test Rule); // Deletes the business rule and publishes it. DeleteAndPublishBR(TestModel, TestEntity, Test Rule);注意调用前需要预先在 MDS 中创建好TestModel、TestEntity并指定存在的版本如默认的VERSION_1。3.1 创建规则条件树 动作的参数化构建CreateAndPublishBR 方法完整展示了规则的对象模型。规则由标识符MemberTypeContextIdentifier需指定ModelId、EntityId、MemberType、优先级Priority、条件树BRConditionTree和动作集合BRActions组成。创建Code 等于 ABC条件的关键代码newRule.Identifier new MemberTypeContextIdentifier { Name ruleName, ModelId modelId, EntityId entityId, MemberType MemberType.Leaf }; newRule.Priority 10; newRule.BRConditionTree new BRConditionTreeNode(); newRule.BRConditionTree.LogicalOperator LogicalOperator.And; newRule.BRConditionTree.Sequence 1; // Create the rule condition Code equals ABC. BRCondition ruleCondition new BRCondition(); // 前缀参数定位属性 CodeBRPropertyName.Anchor 表示锚定属性 conditionPrefix.PropertyName BRPropertyName.Anchor; conditionPrefix.AttributeId new Identifier { Name Code }; ruleCondition.Operator BRItemType.IsEqual; // 后缀参数值 ABCBRPropertyName.Value conditionPostfix.PropertyName BRPropertyName.Value; conditionPostfix.Value ABC;可以看到 MDS 业务规则 API 的设计条件BRCondition由前缀参数属性锚点 运算符BRItemType 后缀参数自由值三元组构成动作BRAction采用同样结构例如Name 必须等于 Test使用BRItemType.MustBeEqual。这种参数化结构意味着你可以用代码构造任意复杂度的规则表达式。创建完成后必须发布rulePublishRequest.BRPublishCriteria new BRPublishCriteria(); rulePublishRequest.BRPublishCriteria.EntityId entityId; rulePublishRequest.BRPublishCriteria.ModelId modelId; rulePublishRequest.BRPublishCriteria.MemberType BREntityMemberType.Leaf; clientProxy.BusinessRulesPublish(rulePublishRequest);BRPublishCriteria指定了规则所属的模型、实体与成员类型是发布动作的作用域。3.2 编辑规则先查后改再发布EditAndPublishBR 方法展示了查询-修改-更新-发布四步模式先用BusinessRulesGet按名称取回规则详情ResultType.Details再直接修改条件对象的运算符与参数——将BRItemType.IsEqual改为BRItemType.StartsWith、后缀值改为Test然后通过BusinessRulesUpdate提交最后再次发布。3.3 验证规则构造违规成员并获取校验问题GetBRValidationIssue 方法是整条场景链的高潮先创建Code Test12、Name AA的叶子成员该成员必然违反Code 以 Test 开头时 Name 必须等于 Test的规则再调用ValidationProcess执行校验最后读取返回的ValidationIssueListvalidationProcessRequest.ValidationProcessOptions.ReturnValidationResults true; ValidationProcessResponse validationProcessResponse clientProxy.ValidationProcess(validationProcessRequest); if (validationProcessResponse.ValidationIssueList.Count 0) { ValidationIssue validationIssue validationProcessResponse.ValidationIssueList[0]; Console.WriteLine(Validation issue: validationIssue.Description); }注意ValidationProcessOptions.ReturnValidationResults true是获取校验结果列表的关键开关。3.4 排除与删除规则排除Exclude的本质是将规则状态置为待排除先查出规则设置selectedBusinessRule.Status BRStatus.PendingExclusion再BusinessRulesUpdate提交最后发布见 ExcludeAndPublishBR。而删除DeleteAndPublishBR则通过BusinessRulesDelete按规则的GUID 标识selectedBusinessRule.Identifier.Id删除之后同样需要发布。这印证了 README 中所有改变规则状态的操作都必须发布的原则。四、实体暂存 API 示例暂存数据的处理、查询与清理entity-based-staging 示例演示如何通过 MDS API处理Process、清理Clear和获取实体暂存Entity Based Staging数据信息。MDS 的暂存机制是批量导入数据的核心通道外部系统先把数据写入stg.架构下的暂存表再由 MDS 处理后进入正式实体。4.1 准备暂存数据BatchTag 与 ImportType运行示例前必须为所用实体的暂存表预置一条暂存记录且记录的 batch tag 必须为Test1。README 给出了可直接执行的 SQL 示例向stg.TestEntity_Leaf暂存表插入记录Insert into stg.TestEntity_Leaf (ImportType, BatchTag, Code, Name) values (0, NTest1, NABC, NName2);其中ImportType 0表示导入类型为合并乐观merge optimistic。此处Code ABC、Name Name2是刻意设计的它会触发业务规则校验错误若Code为ABC则Name必须等于Test从而演示后续的校验问题获取。批处理标志BatchTag是暂存批次的核心标识后续的查询与清理都围绕它展开。4.2 处理暂存数据先解析实体 MUIDProcessStagingData 方法展示了一个关键实现细节实体和版本不能仅凭名称指定必须先通过MetadataGet解析出实体与版本的 MUID唯一标识再传给暂存处理请求// Get entity MUID. MetadataGetRequest getRequest new MetadataGetRequest(); getRequest.SearchCriteria.Models.Add(modelId); getRequest.SearchCriteria.Entities.Add(entityId); getRequest.SearchCriteria.Versions.Add(versionId); getRequest.SearchCriteria.SearchOption SearchOption.BothUserDefinedAndSystemObjects; // Set entity MUID since it cannot be specified only by name. entityId.Id getResponse.Metadata.Entities[0].Identifier.Id; versionId.Id getResponse.Metadata.Versions[0].Identifier.Id; // Create the request object. EntityStagingProcessRequest processRequest new EntityStagingProcessRequest(); processRequest.BatchTag batchTag; processRequest.EntityId entityId; processRequest.VersionId versionId; processRequest.MemberType MemberType.Leaf; // Process staging data. EntityStagingProcessResponse processResponse clientProxy.EntityStagingProcess(processRequest);主流程调用ProcessStagingData(TestModel, TestEntity, VERSION_1, Test1, MemberType.Leaf)后会等待 60 秒Thread.Sleep(60000)让批处理完成见 Program.cs 主流程。4.3 获取暂存信息与清理批次GetStagingInformation 方法通过EntityStagingGet获取批处理信息遍历批次列表匹配 BatchTag返回对应的BatchId代码注释还提示可以从aBatch.ErrorView和aBatch.Status读取错误信息与批次状态。随后 ClearStagingData 方法用返回的BatchId调用EntityStagingClear将批次状态置为Cleared并删除暂存表中该批次的记录。示例最后还复用业务规则 API 创建规则并执行校验验证暂存导入的记录——这与上一节形成闭环暂存导入 → 规则校验 → 问题定位。五、主数据 API 示例成员 CRUD 与层次关系master-data 示例演示如何使用 MDS API创建、读取、更新、删除实体成员Entity Member是主数据日常运维的核心能力。README 列出的 8 个场景在 Program.cs 主流程中一一对应使用 MDS API 创建叶子成员Leaf Member按成员 Code 获取叶子成员信息成员标识符更新叶子成员信息修改 Name使用 MDS API 创建合并成员Consolidated Member按成员 Name 获取合并成员信息更新实体成员关系将叶子成员设为合并成员的子节点删除合并成员删除叶子成员。5.1 建模型与成员创建示例首先通过MetadataCreate动态创建测试模型TestModel GUID 后缀、实体与显式层次见 CreateModel默认版本名为VERSION_1。创建成员的核心在 CreateEntityMemberEntityMembersCreateRequest createRequest new EntityMembersCreateRequest(); createRequest.Members.ModelId new Identifier { Name modelName }; createRequest.Members.VersionId new Identifier { Name versionName }; createRequest.Members.EntityId new Identifier { Name entityName }; createRequest.Members.MemberType memberType; Member aNewMember new Member(); aNewMember.MemberId new MemberIdentifier() { Name aNewMemberName, Code aNewCode, MemberType memberType };值得注意的细节当成员类型为Consolidated合并时必须设置父节点信息——HierarchyId指定层次名称父节点 Code 为ROOT表示层次的根节点见 Program.cs。这反映了 MDS 中合并成员必须挂在显式层次下的约束。5.2 查询成员与属性展示GetEntityMemberByCode 和 GetEntityMemberByName 展示了基于EntityMembersGet的检索方式通过MemberReturnOption.Data返回属性数据并用SearchTerm传入形如Code xxx或Name xxx的过滤表达式。返回的成员属性在 ShowMemberInformation 中按类型分派输出——示例覆盖了String、Number、DateTime、Domain域属性需取MemberIdentifier.Code作为值、File五种属性类型是理解 MDS 属性模型的直观教材。5.3 更新成员与层次关系UpdateEntityMember 演示了局部更新按 Code 定位成员构造AttributeIdentifier.Name Name、AttributeValueType.String、新值后调用EntityMembersUpdate。而 UpdateEntityMemberRelationship 则是调整层次结构的关键操作——通过Parent对象建立父子关系Parent aParent new Parent(); aParent.ParentId new MemberIdentifier() { Code parentMemberCode, MemberType MemberType.Consolidated }; aParent.HierarchyId new Identifier() { Name hierarchyName }; aParent.RelationshipType RelationshipType.Parent; aMember.Parents.Add(aParent);RelationshipType.Parent明确将子成员挂到指定合并成员之下这正是把叶子成员变成合并成员的子节点的实现。5.4 变更集Changeset与审批流程除了 README 列出的 8 个基础场景Program.cs 还扩展演示了**变更集Changeset**能力开启RequireApproval实体级审批开关后通过EntityMemberChangesetSave依次将变更集状态从Open打开流转到Pending待审批再回到Open撤回期间成员的创建/更新/删除都携带ChangesetId参数EntityMembersGet也支持按变更集过滤成员并用Debug.Assert(members.Count 3)断言变更集内的成员数量。整个示例在finally块中调用DeleteModel清理测试模型体现了用完即清的良好习惯。六、元数据 API 示例模型与实体的程序化建模metadata 示例演示如何使用 MDS API 对元数据执行 CRUD场景覆盖四类对象使用 MDS API 创建、获取信息、更新、删除模型Model创建、获取信息、更新、删除实体Entity创建、获取信息、更新、删除属性Attribute创建、获取信息、更新、删除属性组Attribute Group。这四类对象构成 MDS 数据模型的完整层级模型 → 实体 → 属性/属性组。元数据 API 是以代码代替界面建模的基础——上一节 master-data 示例中的CreateModel正是调用MetadataCreate完成的。对于需要自动化搭建开发/测试/生产环境的团队元数据 API 是必不可少的自动化组件。该示例同样依赖mdsURL配置与Reference.cs生成方式见第二节无其他特殊前置条件。七、模型部署 API 示例ModelDUtil 命令行工具model-deployment 示例与前面六个示例不同它不使用Reference.cs代理而是一个独立的控制台应用程序演示模型部署 APIModel Deployment API中几个常用方法。其外部依赖为两个 DLLMicrosoft.MasterDataServices.Deployment.dllMicrosoft.MasterDataServices.Services.contracts.dll构建 Visual Studio 2013 解决方案时需要调整项目引用指向你本机 SQL Server Master Data Services 部署中的上述二进制文件。7.1 配置连接字符串更新ModelDUtil.config工程内对应 ModelDUtil.exe.config中的ConnectionString指向已部署的 MDS 数据库。不要修改连接名称必须保持为defaultMdsConnection并且ModelDUtil.config必须与ModelDUtil.exe放在同一目录下。7.2 命令行用法详解该工具支持以下模式modeREADME 给出了完整的帮助输出模式作用用法ListModels列出目标系统中的所有用户模型ModelDUtil ListModelsListVersions列出指定模型的所有版本ModelDUtil ListVersions [model name]CreatePackage为指定模型创建包文件ModelDUtil CreatePackage [输出包文件名] [模型名] [版本名]DeployClone从包部署模型的克隆ModelDUtil DeployClone [输入包文件名]DeployNew从包以新名称部署模型ModelDUtil DeployNew [输入包文件名] [新模型名]DeployUpdate从包更新指定版本的模型ModelDUtil DeployUpdate [输入包文件名] [要更新的版本名]Help显示帮助ModelDUtil Help注意包含空格的名称要用双引号包裹例如ModelDUtil DeployUpdate mypackage.pkg Version 1这套 CLI 让模型在环境间的迁移打包、克隆、新建、更新完全脚本化——它与 security 示例配合可完整复现一个 MDS 环境详见下一节。八、安全 API 示例安全信息的导出与导入security 示例演示如何将安全信息导出到指定文件以及从文件导入安全信息。它解决的真实痛点是把一套 MDS 环境中的用户、组及其权限完整迁移到另一套环境。8.1 命令行参数该示例通过命令行参数驱动见 security/Program.cs共 5 个参数#参数说明1Mode指示导出还是导入Export导出安全信息Import导入安全信息2MDS Host NameMDS 站点的主机名。例如 MDS URL 为http://mydomain.com/mds时主机名为mydomain.com。Export 模式下是导出源主机Import 模式下是导入目标主机3MDS Application NameMDS 应用程序名。例如 MDS URL 为http://mydomain.com/mds时应用名为mds4File name存储用户与组安全信息的文件名5Exclude Metadata Model Permissions可选是否排除元数据模型权限。指定ExcludeMetadata时排除对应完整用法SecuritySample mode mds_host_name mds_application_name file_name [ExcludeMetadata]8.2 导出/导入的实现机制从 ExportSecurityInformation 可以看到导出流程先调用SecurityPrincipalsGet获取全部用户PrincipalType.UserAccount、SecurityResolutionType.Users再获取全部组PrincipalType.Group、SecurityResolutionType.UserAndGroup请求中同时要求模型权限、功能权限、层次成员权限的详情ResultType.Details随后用XmlSerializer将SecurityInformation含 Users 与 Groups序列化为二进制 XML 文件XmlDictionaryWriter.CreateBinaryWriter。导入流程ImportSecurityInformation则反序列化文件并分两步调用SecurityPrincipalsClone先创建组、后创建用户——代码注释解释了原因部分用户可能属于某个组并引用该组对象因此必须先建组再建用户。克隆操作会以相同的 GUID 在目标 MDS 应用中重建这些安全主体。8.3 关键约束与 ExcludeMetadata 的作用README 明确列出了两条迁移前提导入前目标 MDS 应用中不能存在与源应用相同的用户和用户组导入会重建它们导入模型/成员层次权限之前目标 MDS 应用应拥有 GUID 相同的模型与成员层次——模型部署 APIDeployClone/DeployNew可以部署与源应用 GUID 相同的模型元数据模型除外。关于ExcludeMetadata当目标 MDS 应用中元数据模型Metadata Model的 GUID 与源应用不同时安全信息的导入会失败。此时可在第 5 个参数指定ExcludeMetadata排除元数据模型权限来规避。从源码可以看到排除的实现遍历每个用户/组的SecurityPrivilege.ModelPrivileges剔除ModelId.InternalId 1元数据模型的权限项见 security/Program.cs。这一细节直接指导了跨环境权限迁移的排障方向。九、SharePoint 工作流扩展示例自定义工作流类型workflow 示例与前六个 Web Service 示例不同它提供了一个工作流类型扩展器Workflow Type Extender类用于扩展 SharePoint 工作流。该类位于 SharePointWorkflowExtender.cs工程文件为 Microsoft.MasterDataServices.SharePointWorkflow.csproj。部署方式分两步放置程序集将包含该类的程序集放到与工作流侦听器Microsoft.MasterDataServices.Workflow.exe相同的文件夹中注册扩展器更新侦听器的配置文件引用该类code setting nameWorkflowTypeExtenders serializeAsString valueSPWFMicrosoft.MasterDataServices.SharePointWorkflow.SharePointWorkflowExtender, Microsoft.MasterDataServices.SharePointWorkflow, Version1.0.0.0/value /setting /codeWorkflowTypeExtenders配置项采用键程序集限定名的格式SPWF是自定义工作流类型的键名等号右侧是扩展器类型的完全限定名与程序集信息。这一机制让 MDS 的业务规则可以在触发时驱动 SharePoint 审批流是MDS 企业审批集成的扩展点。十、总结一套完整的 MDS 二次开发工具箱回顾整个 samples/features/master-data-services 目录七个示例覆盖了 MDS 二次开发的全部关键维度通用基础所有 Web Service 示例共用mdsURL配置、GetClientProxy代理创建与HandleOperationErrors错误处理模式配合暴露 WSDL → Visual Studio 生成Reference.cs的固定流程构成 MDS 客户端开发的脚手架业务规则business-rules规则的生命周期管理 发布机制 校验问题获取是数据质量管控的编程入口实体暂存entity-based-staging批处理导入的处理、状态查询与清理是 ETL 批量数据进 MDS 的标准通道主数据master-data叶子/合并成员的 CRUD、层次关系维护与变更集审批是主数据日常维护的编程实现元数据metadata模型、实体、属性、属性组的程序化建模支撑环境自动化模型部署model-deploymentModelDUtil命令行工具实现模型的打包、克隆、新建与更新安全security安全主体信息的导出/导入配合模型部署实现完整的环境复制工作流workflow工作流类型扩展器机制打通 MDS 与 SharePoint 审批。对于需要把 Master Data Services 融入自动化运维体系、构建自定义客户端或实现多环境复制的团队这份示例集既是 API 用法的权威参考也是可以直接改造成生产工具的基础代码。赞分享示例工程数据库教程后端【免费下载链接】sql-server-samplesAzure Data SQL Samples - Official Microsoft GitHub Repository containing code samples for SQL Server, Azure SQL, Azure Synapse, and Azure SQL Edge项目地址https://gitcode.com/gh_mirrors/sq/sql-server-samples点击查看免费下载相关推荐SQL Server Master Data ServicesMDSMetadata API 编程实战基于 C 示例的元数据增删改查全流程解析SQL Server Master Data ServicesMDSMetadata API 编程实战基于 C 示例的元数据增删改查全流程解析 导读 Ma示例工程数据库教程后端在 Azure Data Studio 中实践 Notebook 参数化基于 sql-server-samples 仓库的 Papermill 示例深度解析在 Azure Data Studio 中实践 Notebook 参数化基于 sql server samples 仓库的 Papermill 示例深度解析示例工程数据库教程后端SQL Server Master Data Services 实体暂存 API 实战基于 MDS Web 服务处理、清除与验证暂存数据的 C 示例详解SQL Server Master Data Services 实体暂存 API 实战基于 MDS Web 服务处理、清除与验证暂存数据的 C 示例详解 本指示例工程数据库教程后端上一篇Zotero Reference完整教程5分钟掌握PDF参考文献自动提取的终极技巧下一篇SMAPI模组加载器终极星露谷物语模组管理完全指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考