/ / परिणामों को openrowset विधि से टेम्पल तालिका में sql-sql-server-2008 में ले जाएं

एसक्यूएल-एसक्यूएल-सर्वर-2008 में टेम्पलेट टेबल में ओपनरोसेट विधि से परिणामों को ले जाएं

साथ में

DECLARE @testVariable uniqueidentifier;
SET @testVariable ="c0cad38f-da93-46b5-9f90-ff9eea7dbfd8";
DECLARE @qry varchar(2000);



SET @qry = "SELECT * into #REPORT_1 FROM OPENROWSET
( ""SQLNCLI"",
""Server=localhost;Trusted_Connection=yes;"",
"" SET FMTONLY OFF EXEC VDMS_DB.dbo.UspRankingOfNonNegotiables4 """"" + cast(@testVariable as varchar(100)) + """"""")"


exec(@qry)

select * from #REPORT_1

मुझे इस तरह की त्रुटि मिल रही है

अमान्य ऑब्जेक्ट नाम "# REPORT_1"।

अग्रिम धन्यवाद कृपया मुझे धन्यवाद।

उत्तर:

जवाब के लिए 0 № 1

आप इस तरह से कोशिश कर सकते हैं, डायनामिक एसक्यूएल को हटाएं और इसे अपने ओपनरोसेट स्टेटमेंट में सीधे टेस्ट वैरिएबल वैल्यू सहित स्थिर के रूप में बनाया है। @parameter अद्वितीय पहचानकर्ता घोषित करें

विधि-1

SELECT *
INTO #REPORT_1
FROM OPENROWSET("SQLNCLI", "Server=localhost;Trusted_Connection=yes;", " SET FMTONLY OFF EXEC VDMS_DB.dbo.UspRankingOfNonNegotiables4 @parameter")

SELECT *
FROM #REPORT_1

विधि-2

अपनी # Report_1 अस्थायी तालिका को अलग से बनाएं, फिर निष्पादित करें .. नीचे की तरह।

Create table #REPORT_1
(
col datatype1,
...
...
)

DECLARE @testVariable UNIQUEIDENTIFIER;

SET @testVariable = "c0cad38f-da93-46b5-9f90-ff9eea7dbfd8";

DECLARE @qry VARCHAR(2000);

SET @qry = "SELECT * FROM OPENROWSET
( ""SQLNCLI"",
""Server=localhost;Trusted_Connection=yes;"",
"" SET FMTONLY OFF EXEC VDMS_DB.dbo.UspRankingOfNonNegotiables4 """"" + cast(@testVariable AS VARCHAR(100)) + """"""")"

Insert into #REPORT_1 (col,....)
EXEC (@qry)

select *from #REPORT_1

विधि -3

DECLARE @testVariable UNIQUEIDENTIFIER;

SET @testVariable = "c0cad38f-da93-46b5-9f90-ff9eea7dbfd8";

DECLARE @qry VARCHAR(2000);

SET @qry = "SELECT * FROM OPENROWSET
( ""SQLNCLI"",
""Server=localhost;Trusted_Connection=yes;"",
"" SET FMTONLY OFF EXEC VDMS_DB.dbo.UspRankingOfNonNegotiables4 """"" + cast(@testVariable AS VARCHAR(100)) + """"""")"

SELECT *
INTO #REPORT_1
EXEC (@qry)

SELECT *
FROM #REPORT_1

जवाब के लिए 0 № 2

यह काम

select * into #temp_my1 from openrowset
("SQLNCLI","Server=DEV-WKST-136;Trusted_Connection=yes;", "EXEC performancev3.dbo.usp_testa")

select * from #temp_my1

यह काम नहीं करता है ...

declare @query nvarchar(4000)
set @query="select * into #temp_my2 from openrowset
(""SQLNCLI"",""Server=DEV-WKST-136;Trusted_Connection=yes;"", ""EXEC performancev3.dbo.usp_testa"")"

exec(@query)

select * from #temp_my2

क्यों ...? क्योंकि निष्पादन विवरण आपके वर्तमान सत्र के अलावा एक अलग सत्र संदर्भ में निष्पादित होते हैं।