SQL Server 建立 Linked Server 跨服务器数据库操作

在涉及老项目数据迁移的时候,数据库结构已经完全发生变化,而且需要对老数据进行特殊字段的处理,而且数据量较大,使用Navicat导出单表之后,一个表数据大概在100多万的样子,直接导出SQL执行根本行不通,执行到一般就GG。 之后尝试使用LINQ PAD直接操作两个数据库进行数据迁移,搜索一番,得知LINQ PAD是支持多数据库操作的,而且也是支持linked SqlServer。 首先,我们先在新数据库的服务器上,打开SQL Server Management Studio,连接上数据库,然后在服务器对象上找到链接服务器,右键链接服务器选择新建链接服务器,如下图: 链接服务器:填写你要关联的服务器IP地址 服务器类型:选择其他数据源。 提供程序:这里因为我是安装了Navicat for premium的,所以我直接选择的他的SQL提供程序。 数据源:这里还是填写关联服务器IP地址。 然后我们来到安全性: 选择使用此安全上下文建立链接,然后填上你远程服务器的登陆用户名以及密码即可。 然后我们打开Linq Pad,这里我是使用的LINQ PAD 5,新建一个链接,一直Next,然后到这个界面: 选择Include additional databases,之后会弹出如下界面: 上面选择你主数据库,下面不要点Pick from list来选择数据库,会提示找不到任何链接服务器,这里你手动点击一个条目,在Server 填上你刚才添加的服务器IP,后面database填上你要附加的数据库确定即可。然后成功之后,你的连接就会成这个样子: 然后你就可以直接用C#来进行操作了。

Swagger 出现System.InvalidOperationException 异常

在使用Swagger的时候出现过这种异常: 1 System.InvalidOperationException:“Conflicting schemaIds: Duplicate schemaIds detected for types PDL.SocialGovern.Mobile.Api.Controllers.SystemManager.InformationController+ListQuery and PDL.SocialGovern.Mobile.Api.Controllers.SystemManager.AppDutyController+ListQuery. See the config setting - "UseFullTypeNameInSchemaIds" for a potential workaround” 这种问题的原因是由于在Swagger2.0当中如果你在API层当中声明了多个同样名称的类型的话,就会出现ID冲突,那么你只需要在SwaggerConfig.cs当中将c.UseFullTypeNameInSchemaIds();取消注释即可。 取消注释之后Swagger将会启用完整的类型名称。

在 MVC 项目中出现缺少 System.Runtime 的错误

按照往常一样,编译发布项目。当部署到IIS上面的时候却出现了一个 编译错误 说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。 编译器错误消息: CS0012: 类型“System.Object”在未被引用的程序集中定义。必须添加对程序集“System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”的引用。 这种错误,十分尴尬。 搜索了一下,在web.config的<system.web>节点下面的内部添加一个引用,如下 1 <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 参考资料:http://www.lyalin.com/2014/04/25/the-type-system-object-is-defined-in-an-assembly-that-is-not-reference-mvc-pcl-issue/ 究其原因,在上述文章当中已经写明,这是一个VS的一个BUG。在StackOverflow当中也有针对这个问题的 描述。

为 WebAPI 开启 Session 支持

需要在Global.asax.cs当中重载Init方法: 1 2 3 4 5 public override void Init() { PostAuthenticateRequest+=SessionOpen; base.Init(); } 这里的SessionOpen是一个委托,方法签名为: 1 void Action(object sender,EventArgs e); 即: 1 2 3 4 private void SessionOpen(object sender,EventArgs e) { HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required); }
Built with Hugo
主题 StackJimmy 设计