SQL Stored Procedures - What They Are, Best Practices, Security, and More...

Поделиться
HTML-код
  • Опубликовано: 25 янв 2025

Комментарии • 645

  • @SmokeySpace
    @SmokeySpace 4 года назад +55

    Out of all the years of watching computer and programming tutorials, you teach things so much better and explain everything and explain it in a way that makes sense, thanks!

    • @IAmTimCorey
      @IAmTimCorey  4 года назад +6

      I am glad my training is helpful.

  • @cbuosi
    @cbuosi 5 лет назад +60

    Im a professional, experienced developer and theres always something to learn from your videos, even with 'easy' topics such as this one. Thank you for your videos. Great work.

    • @IAmTimCorey
      @IAmTimCorey  5 лет назад +3

      I appreciate the kind words.

    • @hapocs2
      @hapocs2 8 месяцев назад

      thats why its so overrated, in uni they think we need to know everything xd then i see people saying who are experienced developers that they learn from the simple videos xD

  • @shepniel
    @shepniel 7 лет назад +59

    Seriously this is the best channel about programming, at least for me, hope you continue with these videos that are really helpful. Thank you very much!

    • @IAmTimCorey
      @IAmTimCorey  7 лет назад +4

      I will definitely be continuing. I'm glad you are enjoying the videos.

  • @RalfsBalodis
    @RalfsBalodis 4 года назад +14

    0:00 - Intro
    1:12 - Demo Data Base overview
    2:00 - Creating new stored procedure
    7:35 - Calling the stored procedure
    10:11 - Changing existing stored procedure
    11:12 - Stored procedure with variables
    16:51 - Stored procedures: Recap
    19:54 - Benefits of stored procedures: Security
    22:57 - DB security: Users and Roles
    32:49 - Other benefits of stored procedures
    34:18 - Drawbacks: No source control
    37:36 - Drawbacks: Business logic in DB
    41:48 - Drawbacks: Using Entity Framework
    43:26 - Summary and concluding remarks

  • @andyhudsonsynthpop
    @andyhudsonsynthpop 4 года назад +36

    I've been using Stored Procedures for a least 20 years now, so watched more out of curiosity than anything else. However you never know what you might learn and believe me I have learnt plenty from your wonderful videos. The best of this for me was your commentary on entity framework which just reinforces my belief that I'm better off doing what I've always done. Each to their own I guess, but with so many people now only using entity framework I feel like a dinosaur because I'm not.

    • @IAmTimCorey
      @IAmTimCorey  4 года назад +2

      Awesome! I'm glad it was helpful.

    • @denitsageorgieva7209
      @denitsageorgieva7209 2 года назад +1

      We're not using EF in the company i work for and it's so difficult to find tutorials for adding that data layer without it! So definitely not a dinosaur 😆

    • @cmsinghrawat1367
      @cmsinghrawat1367 Год назад

      Sir need your help to understand procedure n fuctions

    • @opietwoep1247
      @opietwoep1247 Год назад

      I love working with stored procedures. The front end guys would argue with me how having it in c# was better. Until you try to read their logic and say those 20 lines can be done with a single case statement. Thanks for sharing great work

    • @philipdeihle6991
      @philipdeihle6991 Год назад

      44 😮

  • @rtothec1234
    @rtothec1234 9 месяцев назад +1

    I'm a MySQL user but I've learned a lot from this video and hope to apply my understanding to MySQL.
    That bit about granting regular users only access to stored procedures but not access to entire tables, and then only granting them an execute permission, is the crux on which I hope to predicate a solution to a problem I'm working on. Sorry I know I should not end a sentence on a preposition.
    Whereby, I gotta make some data accessible to people who don't really know how to write SQL.
    Hopefully I'm smart enough to do the job.
    Thanks for the video sir.

  • @bluemoon1357
    @bluemoon1357 5 лет назад +20

    This is by far the best video i have ever seen on this topic, Thank you Tim

    • @IAmTimCorey
      @IAmTimCorey  5 лет назад +2

      You are most welcome. Thanks for watching.

  • @elladevan7082
    @elladevan7082 2 года назад

    I have a clear pic of what a stored procedure is by watching this amazing content. I clicked on subscribe option before even close to watch this video. Please keep uploading...

    • @IAmTimCorey
      @IAmTimCorey  2 года назад

      I am glad it was so helpful.

  • @leozhang4574
    @leozhang4574 4 года назад +7

    Hi Tim, I've watched a dozen of your videos and they are very useful. I'm also learning from you how to explain complex technical ideas in plain English to non-technical audience and even to junior programmers. Thank you! From Guangdong China.

  • @bartoszbuawa6521
    @bartoszbuawa6521 3 года назад

    It is the only yt channel where I always give a like button before I start watching. Many thanks for all tutorials !

  • @thenujaliyanage2207
    @thenujaliyanage2207 3 года назад +2

    Amazing video! Not only do you explain what stored procedures are, but you also give detailed background information and use cases. Keep up the great work!

  • @gordonhope9219
    @gordonhope9219 3 года назад +4

    Tim, thanks for another great video!! Although I am now retired and never employed formally as an "engineer", much of my career was around managing a business that was highly secure and mission critical service network. Stored Procs are the way of life in such environments and, like you, NOBODY felt comfortable enough to executed the Entity Framework in such an environment. The business had to be able to fix ANYTHING that happened in the shortest time possible and performance was an issue. With about 1.5M connected end points sending in asynchronous signals, you can imagine how much data was coming into the network and why performance and security were so important. Kudos to you - you are correct about security!!

    • @tomthelestaff-iamtimcorey7597
      @tomthelestaff-iamtimcorey7597 3 года назад +2

      Thanks for sharing based on your experiences. This type validation helps others understand the importance of the lessons and concepts Tim shares.

  • @sebastianweise4790
    @sebastianweise4790 4 года назад +3

    Almost 3 years later, i found this, and... well...subbed and THANK YOU! It helped me a lot!

    • @sebastianweise4790
      @sebastianweise4790 4 года назад

      Ok, i reached the end of the video now, and i just have to THANK YOU AGAIN! Awesome, really, you made it click so many times in my head and filled me with confidence, awesome awesome awesome! Thanks! Please continue doing this, i think i will watch a good chunk of your videos from now. :)

    • @IAmTimCorey
      @IAmTimCorey  4 года назад

      I am glad it was so helpful!

  • @DevineAbyss
    @DevineAbyss 4 года назад +5

    This was one of the most understandable, cohesive, well structured and best introductions I have seen in my whole life. I came with no understanding of anything besides SQL-statements and programming (java etc.) and I feel, I have a decent idea of procedures and role-management now.

    • @IAmTimCorey
      @IAmTimCorey  4 года назад

      Fantastic! Thanks for sharing. Please check out my other training videos - ruclips.net/channel/UC-ptWR16ITQyYOglXyQmpzw

  • @shader3020
    @shader3020 5 лет назад +6

    Thanks for the lesson. I enjoy that you teach more of the WHY and not just the HOW.

  • @devfromthefuture506
    @devfromthefuture506 5 лет назад +1

    Best teacher on RUclips

  • @charliegrayii2124
    @charliegrayii2124 3 года назад +2

    Great channel, excellent mentor, coach, and trainer without a ludicrous price tag. Thank you, Thank you, and Thank you.

  • @johnnyvcrow
    @johnnyvcrow 5 лет назад +8

    Thanks for pointing out that security matters! It's such a big deal today yet I still see so many tutorials where they completely disregard security matters.

    • @IAmTimCorey
      @IAmTimCorey  5 лет назад +1

      You are most welcome. Thanks for watching.

  • @an_wobbly
    @an_wobbly 3 года назад +1

    Fantastic video! Just had a recent interview for web dev in the financial sector and I have fairly little experience with T-SQL. One of the things they asked for me to do is additional research on Stored Procedures and this is the most clear and comprehensive guide I've seen thus far. I really appreciate it and I hope you're happy to hear how helpful you are for helping me get my next job!

  • @gr8one73
    @gr8one73 7 лет назад +6

    This, and the rest of your videos the videos on this channel, is absolutely golden! The SQL course on your site is worth way more than you're charging. You and Derek Banas are The best source for this stuff. Thank you very much, Corey!!

    • @IAmTimCorey
      @IAmTimCorey  7 лет назад +1

      Thanks for the compliment. I appreciate it.

  • @ghulamali7676
    @ghulamali7676 5 лет назад +14

    The way you explain things is amazing.

  • @juanminglao3699
    @juanminglao3699 3 года назад +1

    I've been watching your video's since the start of my programming journey 1 and a half years ago. Thank you for yet another great tutorial!

  • @asyncawake9011
    @asyncawake9011 6 лет назад

    Very easy to follow introduction to stored procedures. Just enough depth to get the general idea without getting bogged down in the details. Thank you for the great free content you provide!

  • @supa.scoopa
    @supa.scoopa Год назад

    Waiting for a full course on SQL by you, because it's brilliantly explained!

    • @IAmTimCorey
      @IAmTimCorey  Год назад

      I do have a full SQL course: www.iamtimcorey.com/courses/accelerate-microsoft-sql/

  • @josephizz4877
    @josephizz4877 4 года назад +1

    the most underrated channel on earth! thanks man.

    • @IAmTimCorey
      @IAmTimCorey  4 года назад +1

      I appreciate the kind words.

    • @josephizz4877
      @josephizz4877 4 года назад

      @@IAmTimCorey you can't imagine how much you helped in my career, hope your life gets happier and easier like what you doing to ours ♡

  • @APersonOnTheWeb
    @APersonOnTheWeb Год назад +2

    at 24:00 you
    created a role : dbStoredProcedureOnlyAccess
    and granted access to dbStoredProcedureOnlyAccess Role.
    But how does SQL Server knows that It is stored procedure only acces role?

    • @IAmTimCorey
      @IAmTimCorey  Год назад +1

      When we created that role, we only allowed execute actions. That means you can only call stored procedures.

    • @APersonOnTheWeb
      @APersonOnTheWeb Год назад

      @@IAmTimCorey ohh okayy... Understood. So we use exec command only for stored procedures right. Thanks for the prompt reply. Your tutorials have been really helpful.

  • @niyaz8
    @niyaz8 6 лет назад

    I never watched about procedures before. And I thought it will be necessary to watch several tutorials. But you made me understand watching only one. Thanks

  • @jasper5016
    @jasper5016 5 лет назад +1

    This is the best tutorial series I have seen. Its ridiculous that you have less than 100K subscribers. You should have at least 500K subscribers.

  • @mehrtashsouri6862
    @mehrtashsouri6862 4 года назад

    Dear Tim, I think You have a precious gift to explain concepts.
    also, using Cached execution plans is one of the most important benefits of Stored Procedures

  • @raghum4938
    @raghum4938 4 года назад +2

    Very clearly and professionally explained. Thank you so much Tim.

  • @randyriegel8553
    @randyriegel8553 2 года назад +1

    Company I'm working for now uses C# and SQL Server. The reporting team wanted access to use sql to make reports and such because they are pretty tech savvy too. So we just created a "Reporting User" and gave it "db_datareader" only. They can query what they want. No sensitive information... its a database of results returned from robots. There are only 4 of us that can actually modify the database in any way. As far as naming convention I still use "sp_" if I'm creating it in master for a common use across our different databases (more things like backup, turn replication on for a database, etc.) Rule of thumb any changes that can be damaging we run the stored procedure to back up the DB before making changes. Yes, databases are still backed up every night though. If I screw something up like an update without a where clause (i've did this before) I can copy that bak. to my local machine get original values to update the production database back to how it was at the moment I backed it up. Worst case we can restore the backup directly in SQL server but with replication this means pretty much bringing that database down for about 1/2 hour or so and resyncing. Fun fun :)

  • @psykodiak5333
    @psykodiak5333 5 лет назад +3

    First day at work. So glad I found you!

    • @IAmTimCorey
      @IAmTimCorey  5 лет назад

      I hope this channel is a lot of help for you.

  • @adan-codes
    @adan-codes 5 лет назад +8

    You are doing the lords work sir. Thank you, I needed this for a project at work.

  • @islamghaith9172
    @islamghaith9172 3 года назад

    seriously one of the best videos I ever watched with a great and detailed explanation.

  • @giaptiennbros
    @giaptiennbros 5 лет назад +9

    Hi Tim! You explain things and make it so simple, thank you !

  • @turn1210
    @turn1210 4 года назад +1

    Great video Tim, I’ve never quite understood that “business logic in the UI only” mantra. Business logic should be wherever it’s most appropriate.

  • @wisemanyt82
    @wisemanyt82 4 года назад +4

    I'm a DBA and it's good to hear a DEV perspective advocating SPs. :-)
    ORM tools like entity framework seem to be quite fashionable with developers. I get the appeal but you give up a lot by not using stored procs - explained very nicely in this video.

  • @tdlabs
    @tdlabs 3 года назад +1

    Thank you tim for all your amzing content, i got a job in IT and your videos were super helpfull both in recruiting and during actual work.
    Best of luck for you and thanks for helping me turn my life around !
    Cheers from Portugal !

    • @IAmTimCorey
      @IAmTimCorey  3 года назад +1

      Great to hear! Thanks for sharing.

  • @mikeowen3191
    @mikeowen3191 22 дня назад

    Thank you Tim! This really helped me with an issue I was having with the Tournament App Tutorial.

  • @modibosanogo3491
    @modibosanogo3491 4 года назад +1

    This is the first time I've ever seen a meaningful use of stored procedures.Thank you so much Tim Corey.The sql databases are most of time shrouded in secrecy and most of developers just know the fundamentals of them .I have been struggling for longtemps to level my expertise in sql databases up to my mastery in Mongodb but just in vain: I am just left with fundementals.It is really crazy.

    • @IAmTimCorey
      @IAmTimCorey  4 года назад

      I am glad you found it valuable.

  • @imadabab
    @imadabab 4 года назад

    Thanks a lot Tim about this great video. I personally build all my ASP.NET projects on simple and complex stored procedures and I will always keep using them, all the reasons you have mentioned are correct 100%, I feel very confident and relaxed when I use stored procedures, and once the stored procedure does its job, I know that it will never give me any surprised error in the futre, they are very controllables, what you write is what you get and no code is behind the scene also they are independant from each others. Great job Tim. Please keep it up as usual.

    • @IAmTimCorey
      @IAmTimCorey  4 года назад +1

      Thanks for sharing

    • @imadabab
      @imadabab 4 года назад

      @@IAmTimCorey Thanks for your efforts dear.

  • @syrss7510
    @syrss7510 2 года назад

    I had many deliberations on sp. Many dissuaded me from using it. I was convinced that sp provides security. But your video provides a very structured reasoning

  • @umitgulsen9869
    @umitgulsen9869 7 лет назад +2

    I was just preparing to move my classical ASP app ( including SP’s) to MVC with EF. Of course, I’m pleased with speed of execution of SP’s, especially in reports, but DB dependency is another consideration for me. I watched so many videos, even bought some trainings. Then I watched this video. It’s a perfect eye opener for me. I’ll watch your tutorial at first, then decide which way to go. Thank you this valuable information. Best regards.

  • @iangabrielalcantara7756
    @iangabrielalcantara7756 3 года назад

    I didn''t know about the sp_ naming prefix. I gotta stop naming stored procedures that way. Thanks for the help sir. Very helpful for a beginner in stored procedures

  • @debbie1724cham
    @debbie1724cham Год назад

    I am a beginner of SQL sp coding. Your video is super detailed and concise. Thank you so much for your help. This is exactly what I need now. Instead of linked server, I would try a new SQL authentication account and use as connection string credentials in our custom script. I will update here on the results.

  • @sick911
    @sick911 3 года назад +1

    Hello Tim I have been watching your videos for a couple of weeks now. Thank you for creating great content and make it easy to understand.

    • @tomthelestaff-iamtimcorey7597
      @tomthelestaff-iamtimcorey7597 3 года назад

      That has always been Tim's goal. Please check out his full channel - ruclips.net/channel/UC-ptWR16ITQyYOglXyQmpzw

    • @IAmTimCorey
      @IAmTimCorey  3 года назад

      You are welcome.

  • @florent9555
    @florent9555 3 года назад

    42:28 As far as I know you can execute custom sql since ef 5 or so. I believe the call was context.Database.SQLQuery where you insert your sql query as a string for example

  • @marlorb23
    @marlorb23 3 года назад

    Can you check constrains with stored procedure , Before it inserts any data?

  • @dergimorka6126
    @dergimorka6126 4 года назад

    WOOW i don't know what to say u cleared my mind i definitely got the idea of SP thank you so much Tim i recommend ur channel to friends i liked it

  • @liberumoratio1704
    @liberumoratio1704 2 года назад

    Some of the best training videos. A great starting place.

  • @polinemuthaiga2752
    @polinemuthaiga2752 5 лет назад

    for the first time to see Spro well elaborated Kudos Corey

  • @jeffsaffron5647
    @jeffsaffron5647 4 года назад +1

    For SQL Server newbies like me that always used Windows authentication locally, when you create a new SQL Server User you also need to allow SQL Server Authentication in SSMS -> Select Server (right click) -> Server Properties -> Security -> Server authentication. For some reason mine was set to Windows mode only by default.

  • @nickt423
    @nickt423 11 месяцев назад

    Hi Corey, excellent video. Question though...how come the user gets denied access to EXEC if my stored procedure has a select statement with joins from different schemas. "The SELECT permission was denied on the object ___, database ____, schema ____. What is the solution for this?

  • @lindatubbing2201
    @lindatubbing2201 4 года назад

    Omg, after watching your video, SQL Stored Procedure is on my mind. Thank you.

  • @ticketisland
    @ticketisland 2 года назад

    This is excellent, thank you, very clear and concise, one of the best I've seen 🙂

  • @OMNS777
    @OMNS777 3 года назад

    Always a delight and informative videos Tim :)

  • @dunnodendedenish
    @dunnodendedenish 3 года назад

    when you made that dbStoredProcedureOnlyAccess how did the system know that the user will only be able to access stored procedure??

  • @Hamza-Shreef
    @Hamza-Shreef 3 года назад

    Tim ! you 're really the best one to explain this.
    go on

  • @picklerick715
    @picklerick715 2 года назад

    Thank you very much Tim! I learnt so much about stored procedures in 44 minutes than I did in my entire semester. Please upload a video about triggers and functions if possible. I'll be looking forward to it. 💪

    • @IAmTimCorey
      @IAmTimCorey  2 года назад

      Thanks for the suggestion. Please add it to the list on the suggestion site so others can vote on it as well: suggestions.iamtimcorey.com/

  • @smakadhar
    @smakadhar 4 года назад

    Great explanation of SP in such a simple way. Thanks Tim

  • @steff.h
    @steff.h 5 месяцев назад

    35:35 Why was the following approach to putting the procedures under source control not mentioned?
    For each procedure needed, write a .sql file that adds the procedure to the database. When the application starts, if files exist that have not been run against the database, make the application run them.
    Check the scripts into Git.
    The application can call all stored procedures whose add file has been run. Works for me.

    • @steff.h
      @steff.h 5 месяцев назад

      I should add: This is not negative criticism, and thanks for the video, I appreciate it 😊

    • @IAmTimCorey
      @IAmTimCorey  5 месяцев назад

      The reason why is because it was outside the scope of this video. We were talking about stored procedures in SSMS, not about how to put them into source control. The reason why is because SSMS does not have source control by default. That's usually a paid add-on. However, I did do a separate video on how build and manage your entire database in Visual Studio, including allowing that project to be managed in source control: ruclips.net/video/ijDcHGxyqE4/видео.htmlsi=9LgbwvAF45sxWTfu
      I also then used that technique in the TimCo Retail Manager series here on RUclips.

    • @steff.h
      @steff.h 5 месяцев назад

      @@IAmTimCorey Thanks! Appreciate it 😊

  • @MrPlamor
    @MrPlamor 2 года назад

    You the best Tim , so much love.

  • @joellevi275
    @joellevi275 2 года назад

    Excellent tutorial as always.
    Thank you for taking the time putting it together.
    Regards

  • @donaldputout519
    @donaldputout519 6 лет назад

    Clear and efficient explanations. One of the best tutorial I saw till now on this subject. Thank's very much!

    • @IAmTimCorey
      @IAmTimCorey  6 лет назад

      You are most welcome. Thanks for watching.

  • @Laggie74
    @Laggie74 5 лет назад +1

    Just want to say, I love your videos and I totally understand where you are coming from. I've worked on systems that used both SP and Linq to EF. Using SP when performance becomes an issue. But Linq is definitely very addictive because it's easy to read and compose complex queries conditionally. But it's also where the performance issue crops up because it's so easy to nest subqueries without thinking about it.

    • @IAmTimCorey
      @IAmTimCorey  5 лет назад +1

      Yep, there are a lot of hidden gotchas.

  • @nicholascasey9784
    @nicholascasey9784 4 года назад

    this class on stored procedure basics was very helpful. thank you!

  • @billscarbrough5586
    @billscarbrough5586 2 года назад

    Great video, question - when creating the role dbStoredProcedureOnlyAccess, how does the environment know it only applies to the Stored Procedures?

  • @neoanderson7962
    @neoanderson7962 5 лет назад

    This is a great video. Excellent work as usual Tim Corey.

  • @dnomyarnostaw
    @dnomyarnostaw 4 года назад

    at 15:57, where you say "Don't change the order of Parameters in case the SP is in use", isn't useful. If an existing call to an SP finds and extra, unexpected parameter, it will still fall over.
    Any Parameter change will always require a complete check of all calling processes.

    • @IAmTimCorey
      @IAmTimCorey  4 года назад

      Not if you make the parameter optional.

    • @dnomyarnostaw
      @dnomyarnostaw 4 года назад

      @@IAmTimCorey Ah, but then we get into the headache of "loose parameters ", where you risk security and reliability due to "unexpected combination" consequences, and worse, have to build in the logic to handle empty parameters.
      Usefull sometimes I know, but a real source of pain.

  • @choubc1
    @choubc1 2 года назад

    I totally agree with you, we can use visual studio data tools project to use compare changes and have it in source control. Similar to what Red gate does.

  • @opietwoep1247
    @opietwoep1247 Год назад

    37:55 you are correct. Business logic belongs in the database.

  • @kdavis63
    @kdavis63 6 месяцев назад

    Been using them for 20 years...they are they best...

  • @michaelshepherdmunemo4414
    @michaelshepherdmunemo4414 2 года назад

    Thank you Sir! All your Videos are informative and helpful

  • @rafaelperes6333
    @rafaelperes6333 3 года назад

    This great video needs a sequel (pun intended) for advanced use of Stored Procedures.

  • @rnrao2966
    @rnrao2966 4 года назад +1

    Very informative and useful tutorials Tim...

  • @KuyaAyotChannel
    @KuyaAyotChannel 3 года назад

    Thanks again bro for another informative video. God Bless and Keep Safe.🤘

  • @willdupleich
    @willdupleich 3 года назад

    Love your videos. I am very new at creating web apps with MVC in C# and I totally agree with you that EF is not the way to go when working with a SQL Server database. I have over 25 years of experience developing SQL server databases and stored procedures are the way to go for all the reasons that you mentioned. Now I need to learn how to used SP with a WebApp.

  • @martinvaughan4197
    @martinvaughan4197 4 года назад

    I completely agree with your position on the 'no business logic in the database' edict. In fact, I would argue that a relational database IS an implementation of business logic in itself, since each table represents a logical data type. Entities such as 'customer', 'product' and 'customer-order' are an integral part of most business models!

    • @IAmTimCorey
      @IAmTimCorey  4 года назад

      Thanks for sharing your perspective.

    • @turn1210
      @turn1210 4 года назад

      Exactly, “business logic” encompasses the whole application, both the database and the UI, then each layer performs the role best suited to it to govern that logic

  • @linojrasmolo7161
    @linojrasmolo7161 2 года назад

    Hi Tim, im a fresh IT graduate and started learning C# language. I loved watching your videos because you just dont show how to do it but also you explain how it works. By the way in terms of security, do you have a videos where you show how to validate user inputs from client side just just before accessing to a database. Thanks.

    • @IAmTimCorey
      @IAmTimCorey  2 года назад +1

      Not specifically, but that sounds like a good suggestion. Please add it to the list on the suggestion site so others can vote on it as well: suggestions.iamtimcorey.com/

    • @linojrasmolo7161
      @linojrasmolo7161 2 года назад

      I will. Thanks.

  • @joseluizdurigon8893
    @joseluizdurigon8893 2 года назад

    Tim Corey, i love you man.

  • @francisf.amunde2619
    @francisf.amunde2619 3 года назад

    Thank you so very Much Tim. You have contributed so much to my career, truly i can't thank you enough, though i am yet having not much enough to subscribe to your paid programs and articles, i am looking forward to someday.
    This video is great, i often used Stored Procedures in my code but i found them to be time consuming and extra work to face so i began to do more of the unsecure query, query thing you know... but with this video, i think i will redirect my energy towards understanding it more and leverage on its benefits. Once again, Tim, Thank you a ton.

  • @solomon645
    @solomon645 4 года назад

    Very good explanation Mr. Tim, and thank you so much for that.

  • @jcgaming9749
    @jcgaming9749 4 года назад +4

    Hi Tim, this is a really fantastic video and you do such a great job of clearly explaining everything! I’m currently studying my MCSA 70-461 and this has helped massively! I wonder if you have any videos on Triggers and Transaction Isolation Levels?

  • @damianspeedszop5700
    @damianspeedszop5700 2 года назад +1

    What if I'm developing desktop app that connects to server in the same network.
    Server is own by my customer so they have 'sa' account. They can just do whatever they want with tables that my app creates.
    I want to create database on their server and I want to give them access but not to whole database.
    EDIT: After looking up for answers I don't think it is possible. If they have 'sa' account they have access to everything and I can't do anything about that. Even if my app would create new user and new role.

    • @IAmTimCorey
      @IAmTimCorey  2 года назад +1

      If they have sa access, you can't limit what they can do.

  • @houstonvanhoy7767
    @houstonvanhoy7767 2 года назад

    Came for the Stored Procedures, now it seems that I'll need to hang around for the C#. This is one of those times when I wanted a better explanation of one thing and wound up with a (needed) kick in the pants about something else. But I'm taking a deep breath and clearing some time on my calendar. 🤔

  • @oysteinsoreide4323
    @oysteinsoreide4323 2 года назад

    you can manually add all your procedure scripts to source control. No extra cost except that the source control commands must be done from outside of management studio.

    • @IAmTimCorey
      @IAmTimCorey  2 года назад

      This should make life easier for you: ruclips.net/video/ijDcHGxyqE4/видео.html

  • @esmanmudimu1627
    @esmanmudimu1627 6 лет назад +2

    This was very informative Tim. Thank you so much.

  • @nickt423
    @nickt423 5 лет назад +2

    Hey Tim can you do a similar video to this for MySQL. That would be awesome!

    • @IAmTimCorey
      @IAmTimCorey  5 лет назад

      I do that in my Foundation in C# course on Data Access: www.iamtimcorey.com/p/foundation-in-c-data-access

    • @nickt423
      @nickt423 5 лет назад

      Also, I was wondering... Do you avoid using the PK_ for user-made primary keys like you do with the SP_ for stored procedures?

  • @andreisipos2535
    @andreisipos2535 4 года назад

    Your videos/tutorials are very useful. Thank you for your work!

  • @riwisan5391
    @riwisan5391 Год назад

    What about when you need to run a dynamically created query from the SP which has been setup to use a execute only role? Is there a workaround for that because you will get a permission denied. Thanks!

    • @IAmTimCorey
      @IAmTimCorey  Год назад

      If you can execute the stored procedure, the code inside of it can be executed.

  • @ronaldabellano5643
    @ronaldabellano5643 3 года назад

    I somehow agree with the business logic in the database. But how we would design the validation from front-end to API to database? Of course the API will have all the input validation and business logic but we will do it again in the DB? Or should the other applications that wants to use the database should use the API?

    • @IAmTimCorey
      @IAmTimCorey  3 года назад

      Think of your data storage process as a castle. Layers of defense. If you focus on just one layer, it can be bypassed and your data compromised. So validation logic goes in the UI (for quick "don't do this" feedback), in the API (for "I'm not going to save that" actions) and a bit in your database (possibly. For "I'm going to stop the worst stuff"). Mostly it will be in the API layer, but there can be a place for it in the database. It all depends on your use case.

  • @bigdummyhead2162
    @bigdummyhead2162 4 года назад

    This was a very good video, a lot of the stuff I knew from your other videos on SQL, but I learned a lot of things about Security!

  • @mohamedwasim3686
    @mohamedwasim3686 3 года назад

    Thank you Tim.. I aslo would like to use ADO instead Entity framework like you.

  • @charlesoto2
    @charlesoto2 2 года назад

    How about using entity framework for small queries on small tables, and Stored procedures for large data including joins etc. Is it good to execute stored procedures using entity framework in that scenario?

    • @IAmTimCorey
      @IAmTimCorey  2 года назад +1

      It all depends on how well you know Entity Framework. If you are really good at it then yes, that works. If not, I would recommend creating your SQL outside of your C# code.

  • @jimkeifer135
    @jimkeifer135 3 года назад

    I do like the idea that business logic, i.e. data validation is built-in to each dB, as it might change from one dB to another based on business needs..

    • @IAmTimCorey
      @IAmTimCorey  3 года назад

      Having some data validation on the database can be a good option, since you don't always control who calls your stored procedures. Just don't go crazy with it and bog down your server.

  • @stonent
    @stonent 4 года назад

    A story I heard before is there was a firm using their database to store high resolution photos as BLOBs in their database and one day was saying their database was thrashing constantly and crawling. It was because someone coded a select statement as select * from whatever that contained the BLOBs when just wanting to peer at the meta-data stored with the BLOBs. Because they had a direct select interface to the data, they could do that and wrecked the performance.

    • @IAmTimCorey
      @IAmTimCorey  4 года назад

      Yep, you have to make sure you monitor the performance of your queries. Knowing how to test and evaluate queries is something that every person who is writing queries should know, whether they are creating stored procedures or using Entity Framework.

  • @IsaacC20
    @IsaacC20 6 лет назад

    @36:40 This is out of scope but it relates to what you said about not making changes to a live server. Is there a guide that you know of that can walk us through setting up different DB servers for stages of development (e.g., local db for testing, development db server, production db server -- those you alluded to)?

    • @IsaacC20
      @IsaacC20 6 лет назад

      I've used the "backup/restore" feature to replicate the state of a live db server onto a local machine for testing C# stored procedures. However, I don't know how to keep the servers synchronized (so that changes that add records to tables will add records to my db)

    • @IAmTimCorey
      @IAmTimCorey  6 лет назад

      Yes, I will be doing a video on putting your database into source control and deploying it to dev, staging, and production. Look into the Data Tools in Visual Studio if you want to get a jump on it.

  • @ДаниелДианов
    @ДаниелДианов 2 года назад

    Great video! I have a question though. When you are speaking about why you like to use stored procedures because of security considerations - can't you reach the same goal if you use View and why is it neccessery to be stored procedure? You basically implemented simple select statement in this stored procedure so what's the difference between a view and this stored procedure?

    • @IAmTimCorey
      @IAmTimCorey  2 года назад +1

      A stored procedure is a different element. I find myself not using them that often. You cannot use parameters with them, they cannot be as easily secured, and they aren't precompiled in the same way.

  • @hixamjocular6591
    @hixamjocular6591 5 лет назад +3

    Hi Tim I just want to tell you're great developer really Thank you

    • @IAmTimCorey
      @IAmTimCorey  5 лет назад +1

      I appreciate the kind words.

  • @jeffsherman9638
    @jeffsherman9638 5 месяцев назад

    Hello Tim, would you say that creating or using stored procedures is the solution to prevent SQL injection attacks? What more is needed to prevent the attacks? I’m also trying to add stored procedures to a Db that was created by EF.

    • @IAmTimCorey
      @IAmTimCorey  5 месяцев назад +1

      It is a major part of the solution, yes. In order to fully prevent SQL injection attacks, you need to have layers of defense. Scrub your inputs on the client-side. Don't allow your users to form SQL queries directly or indirectly. Sanitize your inputs again on the server-side. Use Stored Procedures or at least SQL parameters on your SQL calls so that extra commands cannot be passed to the database server. Limit the permissions of the connection string account that accesses the database. Those are all steps you should consider when preventing against SQL injection attacks.