|
|
|
select ข้อมูลที่ได้จาก DB1 และจะ Insert ไป DB2 ยังไงครับ |
|
|
|
|
|
|
|
ขอบคุณมากครับ ขอบคุณที่สุดในโลก คุณStupid girl
|
|
|
|
|
Date :
2010-04-01 11:07:40 |
By :
sonmy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณพี่วินเถอะค่ะ เพราะมีพี่ๆ บอร์ดนี้เลยยังอยู่ยั้งยืนยงค่ะ
|
|
|
|
|
Date :
2010-04-01 11:17:03 |
By :
blurEye |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เด๋วๆๆๆครับ คืออันนี้มันย้ายใน DB เดียวกัน แล้วถ้าผมจะย้ายไปคนละ DB อ่ะครับ ทำยังไง
|
|
|
|
|
Date :
2010-04-01 11:20:11 |
By :
sonmy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อืม จากที่ฟังมา คือ เอาข้อมูล มาใส่ คนละ Database ไม่ใช่ คนละ table ใช่ไหมคับ
|
|
|
|
|
Date :
2010-04-01 11:32:46 |
By :
Cyg |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถุกครับ ต้อง select มาแล้วเก็บแต่ละฟิลด์ลงตัวแปรก่อน แล้วค่อย Insert รึป่าวครับ
|
|
|
|
|
Date :
2010-04-01 11:39:16 |
By :
sonmy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
INSERT คนละ Database ในกรณีของ MS SQL SERVER
ต้องอยู่ใน instance เดียวกันนะคะ
สมมุติว่า database ตัวข้อมูลต้นแบบชื่อ SOURCE_DB
และมี TABLE ชื่อ SOURCE_TABLE
มี FIELD : FLD_1 ,FLD_2, ... ,FLD_N
database ปลายทางชื่อ TARGET_DB
และมี TABLE ชื่อ TARGET_TABLE
ทั้งสอง Table ต้องมี field เหมือนกันเป๊ะๆ นะคะ ทั้งชื่อทั้ง type ทั้ง length
และโดยปกติ DATABASE SCHEMA ที่ใช้คือ DBO
Code (VB.NET)
'SQL COMMAND ที่ใช้คือ
'SET IDENTITY_INSERT TARGET_DB.DBO.TARGET_TABLE ON
'INSERT INTO TARGET_DB.DBO.TARGET_TABLE (FLD_1 ,FLD_2, ... ,FLD_N)
' SELECT * FROM SOURCE_DB.DBO.SOURCE_TABLE
'SET IDENTITY_INSERT TARGET_DB.DBO.TARGET_TABLE OFF
Dim SQLLiteral As System.Text.StringBuilder = New System.Text.StringBuilder()
SQLLiteral.AppendLine("SET IDENTITY_INSERT TARGET_DB.DBO.TARGET_TABLE ON")
SQLLiteral.AppendLine("INSERT INTO TARGET_DB.DBO.TARGET_TABLE (FLD_1 ,FLD_2, ... ,FLD_N)")
SQLLiteral.AppendLine(" SELECT * FROM SOURCE_DB.DBO.SOURCE_TABLE")
SQLLiteral.AppendLine("SET IDENTITY_INSERT TARGET_DB.DBO.TARGET_TABLE OFF ")
Dim SQLCommandStr As String = SQLLiteral.ToString()
' เอาตัว SQLCommandStr ไป Execute ค่ะ อาจใช้เวลามากหน่อยถ้าข้อมูลเยอะ
' และให้ระวังเรื่อง PrimaryKey ซ้ำกันนะคะ
|
|
|
|
|
Date :
2010-04-01 12:14:07 |
By :
blurEye |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
มาน เอ๋อ อ่ะครับ เอ๋อว่า
Table 'ContractMS_Delete.DBO.Contract' does not have the identity property. Cannot perform SET operation.
ต้องทำไงต่อครับ
|
|
|
|
|
Date :
2010-04-01 14:30:09 |
By :
sonmy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อ้อ ตัดสองบรรทัดออกค่ะ เพราะไม่มี primarykey ใช่ปะคะ
Code (VB.NET)
Dim SQLLiteral As System.Text.StringBuilder = New System.Text.StringBuilder()
'SQLLiteral.AppendLine("SET IDENTITY_INSERT TARGET_DB.DBO.TARGET_TABLE ON")
SQLLiteral.AppendLine("INSERT INTO TARGET_DB.DBO.TARGET_TABLE (FLD_1 ,FLD_2, ... ,FLD_N)")
SQLLiteral.AppendLine(" SELECT * FROM SOURCE_DB.DBO.SOURCE_TABLE")
'SQLLiteral.AppendLine("SET IDENTITY_INSERT TARGET_DB.DBO.TARGET_TABLE OFF ")
Dim SQLCommandStr As String = SQLLiteral.ToString()
' เอาตัว SQLCommandStr ไป Execute ค่ะ อาจใช้เวลามากหน่อยถ้าข้อมูลเยอะ
' และให้ระวังเรื่อง PrimaryKey ซ้ำกันนะคะ
|
|
|
|
|
Date :
2010-04-01 14:31:56 |
By :
blurEye |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมเขียนแบบนี้ถูกมั้ย แต่มันขึ้นแบบด้านบนอ่ะครับ
Code (VB.NET)
strSQL = "SET IDENTITY_INSERT ContractMS_Delete.DBO.Contract ON"
strSQL = "INSERT INTO ContractMS_Delete.DBO.Contract SELECT * FROM ContractMS.dbo.Contract WHERE (Contr_ID = '" & strContrID & "')"
strSQL = "SET IDENTITY_INSERT ContractMS_Delete.DBO.Contract OFF"
cmd = New SqlCommand(strSQL, connMove)
cmd.ExecuteNonQuery()
|
|
|
|
|
Date :
2010-04-01 14:32:16 |
By :
sonmy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Primary Key มีครับ เพราะ Table ใน DB ที่2 ผมก็อปจาก DB 1 มา
|
|
|
|
|
Date :
2010-04-01 14:33:31 |
By :
sonmy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไปดูมาแล้วครับ มันไม่มี Primary Key จิงๆด้วย มันไม่เอ๋อแล้วนะ
แต่มันไม่เห็นเข้า DB2 เลย
|
|
|
|
|
Date :
2010-04-01 15:30:56 |
By :
sonmy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
strSQL <-- ผู้ร้าย
|
|
|
|
|
Date :
2010-04-01 15:50:06 |
By :
tungman (กลั้นใจโพสกลัวโดนด่า) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แต่ผมเอาโค๊ดใน strSQL ไป Excute ใน SQL Query ได้นะ ผ่านด้วย ทำได้ด้วย
|
|
|
|
|
Date :
2010-04-01 15:59:07 |
By :
sonmy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
โปรดฟังอีกครั้ง
strSQL <-- ผู้ร้าย
|
|
|
|
|
Date :
2010-04-01 16:02:26 |
By :
tungman (กลั้นใจโพสกลัวโดนด่า) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อธิบายได้มั้ยอ่ะ จะรู้มั้ยผู้ร้ายยังไง
ผมมือใหม่นะ มิใช่ผู้มีประสบการณ์
|
|
|
|
|
Date :
2010-04-01 16:04:01 |
By :
sonmy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
นี่ๆๆๆจะบอกว่า ถ้าผมเช็คการ Excute อ่ะในโค๊ดอ่ะใช้ เงื่อนไข
if cmd.excutenonquery =0 then
txt.text="T_T"
end if
ปรากฏว่ามันเข้าเงื่อนไขนะ แล้วจะทำไมอ่ะ มันไม่ Excute ให้อ่ะ แต่งงที่เอาไปทำใน Query Anlysis แล้วมันทำได้เนี้ยะแหละ
แล้วตรงผู้ร้ายอ่ะ ดูให้หน่อยแล้วกัน ถ้าเขียนเป็นน่ะ ชิส์
|
|
|
|
|
Date :
2010-04-01 16:18:36 |
By :
sonmy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
strSQL <<< string ?
ไม่ใช่ StringBuilder
strSQL = ? ตัวสุดท้ายอะ
|
|
|
|
|
Date :
2010-04-01 17:23:19 |
By :
numenoy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ก็เป็น String ไง
เท่ากับอารายอ่ะ บอกมาเลยได้มั้ยล่ะครับ ก็ไม่รู้จิงๆ
ไม่งั้นก็ไม่ตั้งกระทู้ถามหรอกพ่อคุณ
|
|
|
|
|
Date :
2010-04-01 17:28:21 |
By :
sonmy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อืม ก็ตอบแบบนี้อะดิ เขาเลยหมั่นไส้แกล้งกันใหญ่ แต่ก็สนุกดีนะ อยากแกล้งต่อเหมือนกัน แต่ไม่เอาแล้วสงสาร
Code (VB.NET)
strSQL = "SET IDENTITY_INSERT ContractMS_Delete.DBO.Contract ON" & _
"INSERT INTO ContractMS_Delete.DBO.Contract SELECT * FROM ContractMS.dbo.Contract WHERE (Contr_ID = '" & strContrID & "')" & _
"SET IDENTITY_INSERT ContractMS_Delete.DBO.Contract OFF"
cmd = New SqlCommand(strSQL, connMove)
cmd.ExecuteNonQuery()
|
|
|
|
|
Date :
2010-04-01 20:30:13 |
By :
tungman |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ทำไม.. เค้าว่าคนแกล้งอ่ะ เค้าชอบเรา อิอิ
5555
ขอโทษล่ะกานครับ
แหมก็คนมันหงุดหงิดหนิ
ผมก็ทำแบบนี้แล้วอ่ะ แต่มันทำไมได้ มันไม่ excute ให้
แล้วตอบดีๆ อย่ากวนอีกล่ะ ชอบกวน
|
|
|
|
|
Date :
2010-04-01 21:31:46 |
By :
sonmy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
สรุปจาบอกมั้ยเนี้ยะเพ่ โปรเจคผมใกล้ส่งละนะ
บอกๆมาหน่อยดิครับ
|
|
|
|
|
Date :
2010-04-01 22:06:37 |
By :
sonmy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อ้าวไม่มีคนตอบให้เยยยยยยยยย งอนแล้ววว
|
|
|
|
|
Date :
2010-04-02 08:34:51 |
By :
sonmy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ยืมคุณ stupid girl หน่อย
Code (VB.NET)
Dim SQLLiteral As System.Text.StringBuilder = New System.Text.StringBuilder()
'SQLLiteral.AppendLine("SET IDENTITY_INSERT TARGET_DB.DBO.TARGET_TABLE ON")
SQLLiteral.AppendLine("INSERT INTO TARGET_DB.DBO.TARGET_TABLE (FLD_1 ,FLD_2, ... ,FLD_N)")
SQLLiteral.AppendLine(" SELECT * FROM SOURCE_DB.DBO.SOURCE_TABLE")
'SQLLiteral.AppendLine("SET IDENTITY_INSERT TARGET_DB.DBO.TARGET_TABLE OFF ")
Dim SQLCommandStr As String = SQLLiteral.ToString()
' เอาตัว SQLCommandStr ไป Execute ค่ะ อาจใช้เวลามากหน่อยถ้าข้อมูลเยอะ
' และให้ระวังเรื่อง PrimaryKey ซ้ำกันนะคะ
SQLLiteral.ToString() = "INSERT INTO TARGET_DB.DBO.TARGET_TABLE (FLD_1 ,FLD_2, ... ,FLD_N) SELECT * FROM SOURCE_DB.DBO.SOURCE_TABLE"
อันนี้ของคุณ
Code (VB.NET)
strSQL = "SET IDENTITY_INSERT ContractMS_Delete.DBO.Contract ON"
strSQL = "INSERT INTO ContractMS_Delete.DBO.Contract SELECT * FROM ContractMS.dbo.Contract WHERE (Contr_ID = '" & strContrID & "')"
strSQL = "SET IDENTITY_INSERT ContractMS_Delete.DBO.Contract OFF"
cmd = New SqlCommand(strSQL, connMove)
cmd.ExecuteNonQuery()
แล้ว strSQL ของคุณ ได้อะไร ?
strSQL = "SET IDENTITY_INSERT ContractMS_Delete.DBO.Contract OFF" <<< command นี้มันไม่ ผิด sql ครับ มันเลยไม่ error แต่คุณไม่ได้ค่าเข้า sql หรอก
ต่างกันอย่างเห็นได้ชัด ลอง debug ซิครับ แล้วจะรู้ว่าผิดอย่างไร
***ระวังเรื่อง เว้นวรรคคำ การใส่ '' ด้วยน่ะ
เฮ้อออ code จนเบลอแล้ว
|
|
|
|
|
Date :
2010-04-02 09:33:48 |
By :
numenoy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไม่ๆครับ ผมบอกว่า strSQL บรรทัดบนกัับบรรทัดล่างผมตัดออกไปแล้ว
แล้วตอนนี้ก็ทำได้แล้วครับ อิอิ ลืมไปดูตรง ค่าตัวแปรตรงเงื่อนไขว่ามันเก็บค่าลงไปมั้ย
อิอิ
ลืมไป
ขอบคุณนนะครับที่ช่วยกันตอบๆให้ผม
|
|
|
|
|
Date :
2010-04-02 09:56:30 |
By :
sonmy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เนทหลุดค่ะเลยยาวเลย ถ้าทำได้แล้วก็ดีใจด้วยค่ะ
ฝากอีกเรื่องคือถ้า table 2 มี primary key ต้อง SET IDENTITY_INSERT ON
ด้วยค่ะ
|
|
|
|
|
Date :
2010-04-02 11:21:52 |
By :
blurEye |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|