SQL Server


SQL Server Export Data Tier Application via Command Line

We can use SSMS to export data tier application for an SQL Server database. I've been using this method for several years on my local machine. For those who don't know what's a DAC, you can refer to Microsoft document: "A data-tier application (DAC) is a logical database management entity that defines all of the SQL Server objects - like tables, views, and instance objects, including logins - …


Merge Data for N-N Relationship Tables in T-SQL

最近在整理博客的数据,需要做一个操作就是合并文章的分类。我的博客中文章和分类是多对多的关系。即一篇文章可以属于多个分类,一个分类可以包含多篇文章。这是一个很典型的多对多关系,我用的是一个多对多的表,做联合主键关联这些数据。 就像这样: 我需要做的是把“DotNetBeginner”这个分类的文章移到“CSharpAndDotNet”分类里去。但是因为原先在“DotNetBeginner”里的文章有些也是属于“CSharpAndDotNet”的,所以直接Update关联表的话,会产生重复的联合主键,就会爆。 直观一点看,写个SQL语句查询出原分类(DotNetBeginner)和目标分类(CSharpAndDotNet)中的数据: DECLARE @SourceCatId …


图解:如何将SQL Azure数据库备份到本地SQL Server

用了两天SQL Azure后,发现SQL Azure数据库没有办法做传统意义上的“bak”备份,但我们确实很需要能够随时将数据库备份到本地,以更灵活的使用。所以今天就开荒了一下操作方法,并分享给大家。这样一来,我们既可以把SQL Server迁移到SQL Azure,又可以反过来把SQL Azure撸回SQL Server,这是一个比较完整的装逼过程,妹子们一定会赞不绝口。 步骤如下: 1. 启动SSMS2012,在目标SQL Azure数据库上点右键,选择“Export Data-tier Application”。 2. 在Export Settings选项卡里制定本地的备份路径,现在已经是“bacpac”拓展名的了。。。 3. 然后点击Next,确认后就向导就开始撸了。 4. 撸完以后会显示 …


ASP.NET MVC3使用SQL Server存取图片

首先,我个人不提倡把图片存在数据库中,尤其是在web站点项目里,因为文件系统的访问更加直接,并且可以得到许多优化,而数据库除了安全性好(适合保存一些保密的图片),其他都没文件系统方便。 如果一定要在SQL Server中存取图片,请看这个例子。 首先,图片的存储实际上是字节流的形式,SQL Server给我们提供了image类型,可以用来保存图片,所以建立的表结构如下,Pic是image类型的字段: CREATE TABLE [dbo].[ImgTest] ( [Id] [uniqueidentifier] NOT NULL, [Pic] [image] NOT NULL, CONSTRAINT [PK_ImgTest] PRIMARY KEY CLUSTERED([Id] ASC)WITH ( PAD_INDEX = OFF, …


SQL Server 授权传递的测试

上周公司有个妹子问了我一个关于SQL Server授权的问题,我没怎么玩过授权,不是很清楚。问题是这样的:如果用户A授权给用户B,用户B再授权给用户C,那么回收A的权限会不会把C的一起回收了。 我以前玩的都是在SQL Server中,给一个数据库添加Windows或者AD帐号,他们都是sysadmin角色,所以删除某个帐号并不影响别的帐号访问。这不适用于妹子的问题,所以今天我特地做了下测试。 测试内容: 用sa(SQL Server管理猿帐号)创建UserA, UserB。然后把SELECT News表的授权给UserA,再让UserA授权给UserB,最后回收UserA的权限,看看UserB还有木有权限。 首先,创建用户的脚本如下: -- Create a SQL Server login named UserA, and then creates a …


博客数据库升级手记(二):新数据库的建立及简单数据的导入

前面一片文章讲了如何将Access数据库直接导入SQL Server。但导入完成后,是强烈建议不要使用的。因为里面的object命名都与sql默认的不符,许多T-SQL行为也很诡异,所以我需要重新建立一个数据库,并且把旧的数据导入到新的数据库中。 一、新数据库的设计 对于新的数据库,这恰好是一次重构和升级的机会,我可以将4年前不合理的表结构设计重构一下(4年前也就是我第一次做这个博客的时候,菜鸟一只)。新的数据库中,博客子系统的设计如下(其实还有很多别的表,但不是给博客主业务用的,以后再讨论): 而旧数据库仅仅只有3张表:Blog、Category、Comment。 对于Category,没有太大的改动,仅仅是增加一个”Name”字段,用来做MVC的路由,而”DisplayName”的功能则和原先数据库是一样的,表示这个分类在页面 …


博客数据库升级手记(一):将Access数据库迁移到SQL Server

本人使用的网站空间送了个200M的SQL Server2008 R2数据库,我不用白不用。所以上周花了很多时间把网站从Access和XML数据存储上迁移到了SQL Server数据库,顺便也升级了一下架构,目前博客子系统已基本完成迁移,最近将逐个迁移页面集系统、留言等模块。 在迁移的过程中,有许多值得记录的经验,在实际项目中非常实用,所以记录下来以备参考。 首先,我的迁移思路是:数据的迁移尽量不通过程序去做,应当采用SQL Server去实现。那么第一步我就得把Access数据库迁移到SQL Server上,这样才能在SQL Server中进行一致的管理和迁移到新的数据库上。 我原来的数据库是Access2007格式的(格式没有太大的关系,2003也可以这样操作)。在Access 2010中的操作方法如下: 1. 在Database Tools选项卡下选择“SQL …


在SQL Server完整版上部署ASP.NET Membership

平时做练习的时候,用的Membership虽然是SQL方式的,但版本是SQL Express,连接的是网站App_Data文件夹里的mdf文件。如果要把同样的Membership部署到SQL完整版上是会爆的。比如你开发的时候自己用的Express,部署到你的主机服务商时,人家当然用的付费购买的完整版。这样就会爆。网上查了些资料,说Membership是SQL Express独有的功能,我不相信。所以自己开荒了一下,并且成功了。分享给大家。 首先,连接网站App_Data目录的mdf文件,确实只有Express版可以。所以完整版的SQL Server必须在数据库引擎里建立数据库,不要放在网站目录下。 建完数据库以后,打开VS2010的命令行环境,运行aspnet_regsql,你会看到下面这个界面。 选择第一项,即在SQL Server里配置Application …


SQL Server 2012入门图解(一):建表、备份、还原

本文很菜,旨在帮助0基础的初学者入门,高手勿看。关于SQL Server 2012的安装可以看我的这篇文章《SQL Server 2012 Express 安装图解》。 一、建立你的第一个数据库和表 例:建立一个用于描述一个学校学生情况的数据库。把它命名为School。并且要在School数据库下建立保存学生信息的表Student。在可视化界面下,我们通常这样操作。(本文是入门教程,不介绍如何用SQL语句建表) 1.    连接到本地数据库引擎后,右击数据库,选择【新建数据库】。 2.    在弹出的对话框中,把数据库名称设置为School,其他参数保留默认。 3.    刷新视图,可以看到School数据库已经建立成功了。 4.    下面我们要 …


SQL Server 2012 Express 安装图解

前段时间微软发布了最新最犀利的SQL Server 2012,我第一时间下载回来尝鲜。在3台机器上实验安装了一下,都没有出问题。安装过程和以往类似,写这篇文章的目的是帮助刚接触SQL Server的初学者入门。高手请直接飘过。 首先,安装SQL Server需要注意的是它的版本。微软最新发布的是SQL Server 2012,但目前使用比较广泛的是2008版。对于初学者来说,安装哪个都一样。不过SQL Server 2008或2012都分别包含两种版本。超大的那个,4个多G的,是给企业用的。几百M的是给学生和开发者用的免费版,也就是Express版,它可以从微软的网站上直接下载。本文讲解的是SQL Server 2012 Express(似乎只有Windows7以上版本可以安装),读者可以寻找下面两个连接去下载: http://wwwco1vip.microsoft.com/ …