ورود

View Full Version : ذخيره مقدار يك فيلد در يك فايل



mehdin69
جمعه 22 آذر 1392, 00:24 صبح
سلام دوستان من با دستور زير يك جدول رو به xml تبديل كردم


SELECT ID_Person, Code, FirstName, LastName
FROM dbo.Person
FOR XML AUTO, ELEMENTS

حالا مي خوام مقدار خروجي اين دستور رو توي يك فايل ذخيره كنم
چطوري ميتونم اين كار رو انجام بدم؟
مرسي

mmd2009
جمعه 22 آذر 1392, 04:20 صبح
با سلام

یک راهش اینه بری بشینی چند خط کد بنویسی تا بتونی این کارو بکنی ، یکیشم اینه که CMD رو باز بکنی و دستوری مثل دستور زیر بنویسی و خلاص ...


bcp "select * from .Server.dbo.Geo_Table FOR XML RAW" queryout d:\test.xml -c -T


موفق باشید

mehdin69
جمعه 22 آذر 1392, 08:49 صبح
عزيز مي خوام sp بنويسم خودش اينكار رو كنه
نمي خوام هر سري به كاربر نرم افزار بگم cmd باز كن

mehdin69
جمعه 22 آذر 1392, 09:12 صبح
اين دستور رو نوشتم
اما ارور زير رو دارم چش شده؟


DECLARE
@saveas nVARCHAR(2048)
,@query nVARCHAR(max)
,@bcpquery nVARCHAR(2048)
,@bcpconn nVARCHAR(64)
,@bcpdelim nVARCHAR(2)

SET @query = 'select * from Person FOR XML AUTO,ELEMENTS'
SET @saveas = 'C:\QueryOutput.xml'
SET @bcpdelim = '|'
SET @bcpconn = '-T' -- Trusted
--SET @bcpconn = '-U <username> -P <password>' -- SQL authentication


SET @bcpquery = 'bcp '+ @query+' QUERYOUT ' + @saveas + '-c -t -T -S'
exec xp_cmdshell @bcpquery;


متن ارور :


Msg 15281, Level 16, State 1, Procedure xp_cmdshell, Line 1
SQL Server blocked access to procedure 'sys.xp_cmdshell' of component 'xp_cmdshell' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'xp_cmdshell' by using sp_configure. For more information about enabling 'xp_cmdshell', search for 'xp_cmdshell' in SQL Server Books Online.

mmd2009
شنبه 23 آذر 1392, 02:07 صبح
سوالت رو یک بار دیگه خوندم اصلا جاییش ننوشته بود میخوای sp بنویسی :چشمک: ولی خب به هر حال ، کدی که نوشتی خطا داره و خطاش هم با اجرای کد زیر تو Sql باید رفع بشه :


-- To allow advanced options to be changed.
EXEC sp_configure 'show advanced options', 1
GO
-- To update the currently configured value for advanced options.
RECONFIGURE
GO
-- To enable the feature.
EXEC sp_configure 'xp_cmdshell', 1
GO
-- To update the currently configured value for this feature.
RECONFIGURE
GO


من حالا بدون مشکل با پروسیجر زیر فایل xml رو درست می کنم. :


SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[DO_XML]
AS


DECLARE
@saveas nVARCHAR(2048)
,@query nVARCHAR(max)
,@bcpquery nVARCHAR(2048)

set @query ='"select * from Test.dbo.TblTest FOR XML AUTO,ELEMENTS"'
set @saveas ='d:\test.xml'
set @bcpquery ='bcp '+ @query+' queryout ' + @saveas + ' -c -t -T -S'

exec xp_cmdshell @bcpquery


موفق باشید

mehdin69
پنج شنبه 28 آذر 1392, 13:52 عصر
چرا من که میسازم فایل xml باز ساخه نمیشه؟
اینم خروجیم
114130

حمیدرضاصادقیان
جمعه 29 آذر 1392, 13:38 عصر
سلام.
برای توضیحات تکمیلتر اینجا (http://stackoverflow.com/questions/18775005/how-to-save-xml-query-results-to-a-file) رو ببینید.

mehdin69
جمعه 29 آذر 1392, 16:30 عصر
آقای صادقیان خب الان توضیحات بیشتر رو خوندم مشکل کد من کجاست؟

حمیدرضاصادقیان
شنبه 30 آذر 1392, 11:15 صبح
دوست عزیز همون روند رو برید جلو به نتیجه مورد نظر میرسید.من کل راه حل رو بهتون دادم.