Koray Kırdinli

Yazılım ve İş Yaşamı Hakkında Paylaşımlar

SQL Tabloda Duplike Kayıtları Silmek (lockres)

Aşağıdaki sql örneği ile duplike kayıtları silmek mümkün. lockres pseudo kodu o rowun fiziksel adresini gösteriyor.

CREATE TABLE TabloAdi (
Column1 varchar(1),
Column2 int
)

INSERT INTO TabloAdi VALUES (‘A’, 1);
INSERT INTO TabloAdi VALUES (‘A’, 1); — duplicate
INSERT INTO TabloAdi VALUES (‘A’, 2);
INSERT INTO TabloAdi VALUES (‘B’, 1);
INSERT INTO TabloAdi VALUES (‘B’, 2);
INSERT INTO TabloAdi VALUES (‘B’, 2); — duplicate
INSERT INTO TabloAdi VALUES (‘B’, 2); — duplicate
INSERT INTO TabloAdi VALUES (‘B’, 2); — duplicate
INSERT INTO TabloAdi VALUES (‘C’, 2)
SELECT *,%%lockres%%
FROM TestTable a
ORDER BY a.Column1, a.Column2

DELETE
FROM TabloAdi
WHERE TabloAdi.%%lockres%%
NOT IN (SELECT MIN(b.%%lockres%%)
FROM TabloAdi b
GROUP BY b.column1, b.Column2)

SELECT Column1,Column2,%%lockres%%
FROM TabloAdi a
ORDER BY a.Column1, a.Column2

Herkese iyi günler dilerim…

Reklamlar

Aralık 21, 2012 Posted by | MSSql | , , | 1 Yorum

System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: Server did not recognize the value of HTTP Header SOAPAction

Projemde bir web servisin url ini ve ismini değiştirdim ve bu hatayı almaya başladım.
Çözümün biraz tırmaladıktan sonra basit olduğunu anlıyorsunuz.

Öncelikle temiz olsun diye şu yolu izlemenizi tavsiye ederim.
C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files altındaki temp dosyalardan kurtulmak gerekiyor.
En önemlisi de değiştirdiğiniz URL’i bir yerde eziyor musunuz? Ben configden aldığım bir url ile eziyormuşum ve eski servis url’ine gidiyormuş.

Yani servisinizin wsdl inde metod var fakat servis tarafında bu metod yoksa böyle bir hata almanız muhtemel.

System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: Server did not recognize the value of HTTP Header SOAPAction: http://tempuri.org/VeriBranchMessages.xsd/GoldSendGet.

Aralık 6, 2012 Posted by | C#, İpucu | , , | Yorum bırakın

The server principal “sqlLoginName” is not able to access the database “myDatabaseName” under the current security context.

Şirkette geçenlerde DRC(Disastery Recovery Center)  serverlarımızda bir test yapmak için bir veritabanı uygulaması publish ettik ve loglarında bu hata ile karşılaştık. Biraz araştırunca sql server’ın restore olması sırasında syslogin SID si ile sysuser SID sinin uyuşmuyor olabileceğini gördük.
Aşağıdaki sorgularla SID leri karşılaştırdık.

USE <myDatabaseName>
SELECT sid FROM sys.sysusers WHERE name = ‘userName’
SELECT sid FROM sys.syslogins WHERE name = ‘userName’

ve aşağıdaki stored prosedür ile de problemi çözdük.
EXEC sp_change_users_login @Action=’update_one’, @UserNamePattern=’userName’,@LoginName=’userName’


You can see that the SID does not match the system views: sys.sysusers and sys.syslogins

SELECT sid FROM sys.sysusers WHERE name = ‘sqlLoginName’
SELECT sid FROM sys.syslogins WHERE name = ‘sqlLoginName’

http://blogs.technet.com/b/mdegre/archive/2010/08/28/the-server-principal-quot-sqlloginname-quot-is-not-able-to-access-the-database-quot-mydatabasename-quot-under-the-current-security-context.aspx

 

Aralık 5, 2012 Posted by | MSSql | , , , , | Yorum bırakın