如何把SqlServer查询的结果生成excel-CSDN论坛

如何把SqlServer查询的结果生成excel-CSDN论坛,第1张

1、打开SQL Server Management Studio,然后找到相应的数据库

2、右键点击数据库名称,然后点选“任务-->导出数据”

3、弹出"导入和导出向导"界面后,点击下一步按钮,进入"选择数据源"界面。“数据源”和“服务器名称”采用默认值,“身份验证”默认使用Windows身份验证,可选择“使用SQL Server身份验证”方式进行验证。“数据库”需要选择为要导出数据的目标数据库。

4、点击下一步,进入"选择目标"界面。默认目标为“SQL Native Client”,需要将目标进行重新选择为“Microsoft Excel”。然后选择导出位置(即“Excel文件路径”),并命名一个导出文件名。

5、点击下一步,进入"指定表复制或查询"界面。在该界面,可以选择数据导出模式,如果需要通过SQL查询语句精确导出部分数据,则选择“编写查询以指定要传输的数据”导出方式

6、如果选择的是第二种导出方式,则点击下一步按钮,进入“提供源查询”界面。在SQL语句栏中,输入查询条件,然后点击分析按钮检验SQL语句是否正确有效,如果分析显示“此SQL语句有效”,则可以继续执行下一步操作。

7、点击下一步,进入“选择源表和源视图”界面。继续点击下一步按钮,进入“保存并执行包”界面。在该界面,点击下一步按钮,然后点击完成按钮,开始执行数据导出操作。在执行结束后,即可在相应导出位置找到导出的Excel数据文件。

SQL Server 2012在升级之前我们需要做一些准备。首先必须验证软件和硬件需求;准备足够的资源,用于测试和实现新系统。但是,您可能忽略了一些重要方面--处理SQL Server数据的客户端应用程序

  这正是SQL Server 2012的Upgrade Assistant(升级助手)的作用。Upgrade Assistant提供了一种自动处理机制,用于测试从SQL Server 2005、2008或2008R2移植到SQL Server 2012的应用程序兼容性。使用Upgrade Assistant,可以检测升级过程中可能发生的功能和性能问题。Upgrade Assistant可以验证应用程序的SQL Server 2012 Transact-SQL查询,可用于检测和纠正应用程序源代码的兼容性问题。

  Upgrade Assistant是由微软和Scalability Experts Inc合作开发。Upgrade Assistant使用工作负载测试,对旧版本的SQL Server与SQL Server 2012的应用程序性能进行比较。如果按照产品文档所描述的步骤(同时考虑用户界面的结构),就可以确定可能影响应用程序的问题,如弃用的特性或Transact-SQL语法变化。

  Upgrade Assistant测试过程

  Upgrade Assistant可以指引您验证应用程序在SQL Server 2012的兼容性。在开始之前,要先创建用于运行示例工作负载的测试环境。理论上,可以在生产数据库上执行测试,但是这种方法存在一定的风险。因为这不仅会对运行的应用程序、后台数据库和网络本身的性能产生负面影响,而且如果出现命名冲突或事务中断,就有破坏应用程序和数据完整性的风险。

  至少,您的测试环境应该包含一个数据库服务器,然后在其上安装当前版本的SQL Server(2005、2008或2008 R2)及Upgrade Assistant服务器还必须支持SQL Server 2012升级。此外,您必须从所测试的应用程序连接数据库服务器。应用程序应该是一个测试系统,以便执行自动化过程,完全补全应用程序的特性。如果使用生产应用程序来执行测试,那么您很可能只能检查到较小比例的功能。

  一旦建立了测试环境,您就可以使用SQL Server Upgrade Assistant,执行以下步骤:

  备份相关系统和用户数据库,获取示例工作负载。Upgrade Assistant会将工作负载捕捉为跟踪文件,其中记录了有代表性的应用程序数据库查询记录。

  基于第一步创建的备份和跟踪文件,建立基线环境。在这个过程中,运行SQL Server Upgrade Advisor,确定数据库跟踪文件和备份文件中的升级问题。这时,您应该解决所有出现的问题,才能继续Upgrade Assistant后面的步骤。

接到一个任务,有2台机器,其中有一台机器A有每天数据库的备份,我想另外的一台机器B定时从A中copy到B的制定目录,A不共享数据库备份的目录。考虑到FTP方式无法跨越NAT(网络地址转换),而HTTP方式在安全性和可靠性方面都得不到保证,在文件较大时也会有一定的限制。决定采用一种基于HTTP协议,编写客户端和服务器端程序,在一个客户端用HttpWebRequest对象向指定的URL发送POST和GET请求,在服务器端通过程序接受请求,进行文件传输,这样,发送和接收都由自己编写的程序进行控制,可以方便地实现诸如身份验证、数据加密和断点续传等功能,同时可以穿越防火墙和NAT。这样做就可以实现在Net中跨Internet的文件加密传输。

在net中实现跨Internet的文件加密传输的程序源码

一、数据上传

1客户端代码

//从文本框中获得文件的全称,含路径名

string strFilePath=txUpFileText;

//获得文件的长度

FileInfo fi=new FileInfo(strFilePath);

long lFileLength=fiLength;

//获得文件名

string strFileName=strFilePathSubstring(strFilePathLastIndexOf("\\")+1);

//创建HttpWebRequest对象,传入路径名,将文件名和长度作为参数传给服务器端

HttpWebRequest objRequest=(HttpWebRequest)HttpWebRequestCreate(string

Format(@"{0}FileName={1}&FileLength={2}",txUpURLText,strFileName,

lFileLengthToString()));

//定义Request对象的方法为"post"

objRequestMethod="POST";

//定义Request对象的内容类型为"application/octet-stream"

objRequestContentType="application/octet-stream";

//定义请求内容的长度

objRequestContentLength=((int)(lFileLength/8+1))8;

//定义一个请求的流

Stream reqStream=objRequestGetRequestStream();

//用DES算法加密此请求流

byte[] desKey={1,0,1,1,5,6,7,8};

byte[] desIV={1,2,3,4,5,6,7,8};

DES des=new DESCryptoServiceProvider();

CryptoStream encStream=new CryptoStream(reqStream,desCreateEncrytor(desKey,desIV),CryptoStreamModeWrite);

//定义内存缓冲区用于文件的读写

int iBufferSize=4095;

byte[] buffer=new byte[iBufferSize];

//打开文件,准备读取

FileStream fileStream=new FileStream(strFilePath,FileModeOpen,FileAccessRead);

int iReadLength=0;

//将文件内容读入缓冲区

iReadLength=fileStreamRead(buffer,0,bufferLength);

while(iReadLength!=0) {

//将读出的文件内容写入加密流

encStreamWrite(buffer,0,iReadLength);

iReadLength=fileStreamRead(buffer,0,bufferLength);

}

//关闭请求的流

encStreamClose();

reqStreamClose();

fileStreamClose();

//向服务器提出请求并获得结果3

HttpWebResponse sp=(HttpWebResponse)objRequestGetResponse();

string strContent="";

int iLen=(int)spContentLength;

if(iLen>0) {

//将结果流写入到二进制流bContent中

Stream resStream=spGetResponseStream();

byte[] bContent=new byte[spContentLength];

resStreamRead(bContent,0,iLen);

spClose();

//由于结果是一个二进制数据,必须将结果解码成字符串

char[] charContent=new char[spContentLength];

TextDecoder dc=TextEncodingUTF8GetDecoder();

int charLen=dcGetChars(bContent,0,bContentLength,charContent,0);

foreach(char c in charContent) strContent+=cToString();

}

2服务器端代码

//判断请求的ContentType,过滤非法请求

if(RequestContentType!="application/octet-stream") return;

//获得上传得文件名和长度

string strFileName=RequestQueryString["FileName"];

int iFileLength=RequestTotalBytes;

//构造服务器端文件名

string strFilePath=ServerMapPath("")+IOPathDirectorySeparatorChar+"Upload"+IOPathDirectorySeparatorChar+strFileName;

//判断文件是否存在

if(FileExists(strFilePath)) {

//如果文件存在,返回文件名和文件长度

FileInfo fi=new FileInfo(strFilePath);

long lFileLength=fiLength;

ResponseWrite("File["+strFileName+"]Exists!Length="+lFileLengthToString());

ResponseEnd();

}

//如果文件不存在,打开文件流创建该文件

FileStream fileStream=FileCreate(strFilePath,iFileLength);

//用DES算法解密该文件流

byte[] desKey={1,0,1,1,5,6,7,8};

byte[] desIV={1,2,3,4,5,6,7,8};

DES des=new DESCryptoServiceProvider();

CryptoStream desStream=new CryptoStream(fileStream,desCreateDecryptor(desKey,desIV),CryptoStreamModeWrite);

//定义内存缓冲区大小

int iBufferSize=4095;

//读取请求流并写入文件中

byte[] buffer=new byte[iBufferSize];

int iReadLength=0;

iReadLength=RequestInputStreamRead(buffer,0,bufferLength);

while(iReadLength>0) {

desStreamWrite(buffer,0,iReadLength);

desStreamFlush();

iReadLength=RequestInputStreamRead(buffer,0,bufferLength);

}

desStreamFlush();

desStreamClose();

fileStreamClose();

//返回结果

ResponseWrite("File["+strFileName+"]UploadSuccess!");

ResponseEnd();

二、数据下载

1客户端代码

//获取下载文件名

string strFileName=txDownFileText;

//定义文件偏移量

int iOffset=0;

//创建HttpWebRequest对象,传入路径名,将文件名和偏移量作为参数传给服务器

HttpWebRequest objRequest=(HttpWebRequest)HttpWebRequestCreate(string

Format(@"{0}FileName={1}&Offset={2}",txDownURLText,strFileName,iOffset));

//定义Request对象的方法为"get"

objRequestMethod="GET";

//定义Request对象的内容类型为"application/octet-stream"

objRequestContentType="application/octet-stream"

//获得请求结果

HttpWebResponse sp=(HttpWebResponse)objRequestGetResponse();

Stream resStream=spGetResponseStream();

string strFilePath=txDownPathText;

//如果文件存在,则删除

if(FileExists(strFilePath)) {

FileDelete(strFilePath);

}

//创建文件

int iBufferSize=4095;

FileStream fileStream=FileCreate(strFilePath);

//解密返回的流

byte[] desKey={1,0,1,1,5,6,7,8};

byte[] desIV={1,2,3,4,5,6,7,8};

DES des=new DESCryptoServiceProvider();

CryptoStream decStream=new CryptoStream(resStream,desCreateDecryptor(desKey,desIV),CryptoStreamModeRead);

byte[] buffer=new byte[iBufferSize];

int iReadLength=0;

//读取返回流

iReadLength=decStreamRead(buffer,0,bufferLength);

while(iReadLength>0) {

//写入文件流中

fileStreamWrite(buffer,0,iReadLength);

iReadLength=decStreamRead(buffer,0,bufferLength);

}

fileStreamFlush();

decStreamClose();

fileStreamClose();

resStreamClose();

return "File["+strFileName+"]Download Success!";

2服务器端代码

//获得上传的文件名和偏移量

string strFileName=RequestQueryString["FileName"];

long lOffset=ConvertToInt64(RequestQueryString["Offset"]);

//构造文件全路径名

string strFilePath=ServerMapPath("")+IOPathDirectorySeparatorChar+"Download"+IOPathDirectorySeparatorChar+strFileName;

//若文件不存在,则返回错误信息

if(!FileExists(strFilePath)) {

ResponseClear();

ResponseWrite("File["+strFileName+"]Not Exists!");

ResponseEnd();

}

//打开文件

IOFileStream fileStream=new IOFileStream(strFilePath,IOFileModeOpen,IOFileAccessRead,IOFileShareRead);

//根据上传的偏移量参数设置偏移量

if(lOffset>0)

fileStreamSeek(lOffset,IOSeekOriginBegin);

//定义输出流

Stream resStream=ResponseOutputStream;

//用DES算法加密此数据流

byte[] desKey={1,0,1,1,5,6,7,8};

byte[] desIV={1,2,3,4,5,6,7,8};

DES des=new DESCryptoServiceProvider();

CryptoStream encStream=new CryptoStream(resStream,desCreateDecryptor(desKey,desIV),CryptoStreamModeWrite);

//定义输出文件流的头

ResponseContentType="application/octet-stream";

ResponseAddHeader("Content-Disposition","attachment;filename="+strFileName);

int iBufferSize=4095;

byte[] buffer=new byte[iBufferSize];

int iReadLength=0;

//读取文件

iReadLength=fileStreamRead(buffer,0,bufferLength);

while(iReadLength>0) {

//写入输出流

encStreamWrite(buffer,0,iReadLength);

iReadLength=fileStreamRead(buffer,0,bufferLength);

}

encStreamFlush();

resStreamFlush();

//关闭流

encStreamClose();

resStreamClose();

fileStreamClose();

//ResponseFlush();

//结束输出

ResponseEnd();

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何把SqlServer查询的结果生成excel-CSDN论坛

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情